常用函数

//同时修改主从表、或多表的时候,对从表的更新模式做调整
        protected override void SetUpdateMode(SQLTableInfo info, ref UpdateMode mode)
        
{
           
if (info.TableName == fFaultTableInfo.TableName || info.TableName==fProductTableInfo.TableName)
            mode 
= UpdateMode.Merge;
        }

//代码表
        protected override void AddCodeTable(StringCollection codeTables)
        
{
           
base.AddCodeTable(codeTables);    
           codeTables.Add(
"CD_SELL_AREA");        //销售范围
         }
        

//数据权限
        protected override void SetSubFunctionKey(PageStyle style, ref object subKey)
        
{
            
base.SetSubFunctionKey (style, ref subKey);
        }


//主从表内容
        protected override void AddDetailListTable(StringCollection detailTables, StringCollection detailCodeTables, 

object key)
        
{
            
//登录的用户信息
            string UsersSql = string.Format("SELECT DISTINCT USER_ID CODE_VALUE,USER_NAME CODE_NAME FROM UR_USERS 

WHERE (USER_ID IN(SELECT HP_CREATE_ID FROM EB_HOSPITAL WHERE HP_ID 
= '{0}')) OR (USER_ID IN(SELECT HP_UPDATE_ID FROM 

EB_HOSPITAL WHERE HP_ID 
= '{0}'))",key.ToString());
            BrowseInfo.ChangeSql(UsersSql,"UR_USERS",DbConnection,this);

            
//医院信息
            string HospitalSql = string.Format("select * from EB_HOSPITAL EB_HOSPITAL_DETAIL where HP_PARENT_ID = 

'{0}'",key.ToString());
            BrowseInfo.ChangeSql(HospitalSql,"EB_HOSPITAL_DETAIL",DbConnection,this);
            
//人员信息
            string PersonSql = string.Format("select EB_PERSON_INFO.* from EB_PERSON_INFO INNER JOIN EB_HOSPITAL 

ON PI_HP_ID 
= HP_ID AND HP_ID = '{0}'",key.ToString());
            BrowseInfo.ChangeSql(PersonSql,"EB_PERSON_INFO",DbConnection,this);
            
//保修卡信息            
            string CardSql = string.Format("SELECT EB_GUARANTEE_CARD.*, EB_PRODUCT_OUT.* FROM EB_HOSPITAL INNER 

JOIN EB_GUARANTEE_CARD ON  EB_HOSPITAL.HP_ID 
= EB_GUARANTEE_CARD.GC_HP_ID AND EB_HOSPITAL.HP_ID ='{0}' INNER JOIN 

EB_PRODUCT_OUT ON  EB_GUARANTEE_CARD.GC_PC_CODE 
= EB_PRODUCT_OUT.PO_PC_CODE AND       EB_GUARANTEE_CARD.GC_BAR_CODE = 

EB_PRODUCT_OUT.PO_BAR_CODE
",key.ToString());            

            BrowseInfo.ChangeSql(CardSql,
"EB_GUARANTEE_CARD",DbConnection,this);
            
            
base.AddDetailListTable(detailTables, detailCodeTables, key);
        }




//多表的修改    
protected override void FillUpdateTables(object key,PageStyle style)
        
{            
            TableInfo.SetKeyValueAndFill(DbConnection,key,
this);
            
            
            fCFTableInfo.FillData(
this,DbConnection,string.Format("WHERE CF_RSC_ID = {0}",key.ToString()));
            fCSFTableInfo.FillData(
this.DbConnection,string.Format("WHERE CSF_RSC_ID = {0}",key.ToString()));
            
//工作报告信息            
            string ReportSql = string.Format("select SR_ID AS CODE_VALUE,SR_CODE AS CODE_NAME from EB_SERVICE 

where SR_ID
='{0}'",Tables[TableName].Rows[0]["RSC_SR_ID"].ToString());
            BrowseInfo.ChangeSql(ReportSql,"EB_SERVICE",DbConnection,this);
            MidSearchFields.FillDataSet(
this);

        }
    

//夺标的修改删除
protected override void FillUpdateTables(DataSet postDataSet)
        
{
            
//从表内容
             string key = postDataSet.Tables[TableName].Rows[0][KeyFields].ToString();            
            TableInfo.SetKeyValueAndFill(DbConnection,key,
this);
            fCFTableInfo.FillData(DbConnection,
string.Format("WHERE CF_RSC_ID = '{0}'",key));
           fCSFTableInfo.FillData(DbConnection,
string.Format("WHERE CSF_RSC_ID = '{0}'",key));
            
//将服务工作报考的名称替换为ID PostDataSet.Tables                
            DataTable fTable =PostDataSet.Tables[TableName];
            
string sql = string.Format("Select SR_ID from EB_SERVICE where 

SR_CODE
='{0}'",fTable.Rows[0]["RSC_SR_ID"]);
            string fsr_id=DataSetUtil.ExecuteScalar(sql,DbConnection).ToString();
            
//替换结束
            if(fsr_id == null || fsr_id == string.Empty)
            
{
                ErrorObjects.Add(
new ErrorObject("EB_REPAIR_SERVICE_CONTRACT" , "RSC_SR_ID" , "输入服务单号不

正确
",0));
                fTable.Rows[0]["RSC_SR_ID"]= DBNull.Value;
            }

            
else
            
{                
                fTable.Rows[
0]["RSC_SR_ID"]=Convert.ToInt32(fsr_id);
            }

            CheckPostData(PostDataSet,fCFTableInfo);
            CheckPostData(PostDataSet,fCSFTableInfo);
            
        }

        
public void CheckPostData(DataSet postData,SQLTableInfo fDtailTableInfo)    
        
{
                DataTable table 
= postData.Tables[fDtailTableInfo.TableName] ;
            
            
if(table == null)
            
{
                TableInfoCollection.Remove(fDtailTableInfo);
                
return;
            }
    
            
if (postData.Tables.Contains(fDtailTableInfo.TableName))
            
{
                
                
int i = 1 ;                
                
for (int j=table.Rows.Count - 1; j>=0--j, ++i)
                
{
                    DataRow row 
= table.Rows[j] ;
                    
if (row[fDtailTableInfo.KeyFields].ToString() == string.Empty)
                        row[fDtailTableInfo.KeyFields] 
= -i ;

                }

            }

        }

                    

        
protected override void CommittingData()
        
{
            
base.CommittingData ();
            
if(this.CurrentPageStyle == PageStyle.Update && this.PostDataSet.Tables[fCFTableInfo.TableName] == 

null && 
                Tables[fCFTableInfo.TableName] 
!= null && 
                Tables[fCFTableInfo.TableName].Rows.Count 
> 0)
            
{
                fCFTableInfo.SetCommands(AdapterCommand.Delete,DbConnection);
                
foreach(DataRow row in Tables[fCFTableInfo.TableName].Rows)
                
{
                    row.Delete();
                }

                TableInfoCollection.Add(fCFTableInfo);
            }

            
if(this.CurrentPageStyle == PageStyle.Update && this.PostDataSet.Tables[fCSFTableInfo.TableName] == 

null && 
                Tables[fCSFTableInfo.TableName] 
!= null && 
                Tables[fCSFTableInfo.TableName].Rows.Count 
> 0)
            
{
                fCSFTableInfo.SetCommands(AdapterCommand.Delete,DbConnection);
                
foreach(DataRow row in Tables[fCSFTableInfo.TableName].Rows)
                
{
                    row.Delete();
                }

                TableInfoCollection.Add(fCSFTableInfo);
            }

        }
原文地址:https://www.cnblogs.com/chinatefl/p/166077.html