CRM[控制項與資料表影射]

來源:互聯網
上載者:User

     在ASP.NET編程中,經常要做就是畫一個Form,然後堆砌我們的控制項,然後再重複的寫一些新增,編輯,更新的重複的工作.事實上,我們大部分時間在做的工作都一樣的工作,於是我們就是問:有沒有方法在客戶機上只要定製好介面[編輯aspx檔案,或編輯資源檔]上傳檔案,然後就可以實現我們要的功能,答案是肯定的. 
        依照我們的習慣,我們在做資料庫編輯的時候,無外乎就要擷取可以映射到資料表欄位的控制項的值,肯定的控制項是跟資料表欄位是對應的.不管是資料儲存和顯示時都需要. 

        問題1:如何映射?
  1,要做到資料欄位跟控制項ID映射,常見的方法不外乎就是:在控制項ID上下功夫,在命名控制項ID時有欄位的影子,可通過資料表欄位找到控制項,形成映射;或者是通過資源檔約定映射關係,可直接擷取資料表字和控制項關係.
        如:資料表的欄位名為:ID,Name,Title時,控制項可對應命名為:F_ID,F_Name,F_Title。
        2,通XML資源檔定義。
         如:Name表名欄位名,CtrlId表示控制項ID
     <Mapper TableName="xS_Self_File" Cname="檔案管理">
        <Field Name="ID" Type="C" Cname="單號" CtrlId="txt_Fid" CtrlType="Txt" KeyWord="Yes" Value="seq_self_file.NEXTVAL"/>
        <Field Name="Title" Type="C" Cname="檔案標題" CtrlId="txt_Title" CtrlType="Txt" KeyWord="No"/>
        <Field Name="Name" Type="C" Cname="檔案名稱" CtrlId="txt_FileName" CtrlType="Txt" KeyWord="No"/>
        <Field Name="Path" Type="C" Cname="檔案路徑" CtrlId="txt_FilePath" CtrlType="Txt" KeyWord="No"/>
        <Field Name="No" Type="C" Cname="檔案編號" CtrlId="txt_FileNo" CtrlType="Txt" KeyWord="No"/>
        <Field Name="Source" Type="C" Cname="檔案來源" CtrlId="txt_FileSource" CtrlType="Txt" KeyWord="No"/>      
        <Field Name="Type" Type="C" Cname="檔案類型" CtrlId="dll_Type" CtrlType="Dll" KeyWord="No"/>     
        <Field Name="Stop" Type="C" Cname="是否停用" CtrlId="dll_Stop" CtrlType="Dll" KeyWord="No"/>  
        <Field Name="Content" Type="C" Cname="檔案說明" CtrlId="txt_Content" CtrlType="Txt" KeyWord="No"/>
        <Field Name="addby" Type="C" Cname="操作時間" CtrlId="txt_addby" CtrlType="Txt" KeyWord="No"/>
        <Field Name="addat" Type="C" Cname="操作人" CtrlId="txt_addat" CtrlType="Txt" KeyWord="No"/>
     </Mapper>

        問題2:如何擷取控制項?
        1、 如果是通過控制項ID來影射時,可以通過遍曆[遞迴]控制項容器(如Page,HtmlForm)的子控制項,就看我們的控制項置身於什麼容器下.先搜尋到相關錄入控制項,然後對應資料表欄位。
  /// <summary>
  /// 擷取表欄位控制項,在自訂表格單中,控制項的命名是:F_欄位名
  /// 必須定一個控m_Tablename控制項,用以儲存表名 
  /// </summary>
  public Hashtable GetCtrlList()
  {
   Hashtable m_ht = new Hashtable();
   foreach(Control m_Ctrl in this.Page.Controls)   
   {  
    foreach (Control m_tb in m_Ctrl.Controls)
    {
     // 如果有字控制項且不是使用者自訂控制項,則搜下層控制項!
     if ( ( m_tb.HasControls() ) &&(!( m_tb is UserControl )))
     {
      GetCtrlList();
     }
     else
     {
      if ( m_tb.ID == null )                                            
      {
       continue;
      }

      if ( m_tb.GetType().ToString() == "System.Web.UI.LiteralControl" )  // 如果是空格
      {
       continue;
      }

      if ( !m_tb.ID.StartsWith("F_")) // 如果是欄位
      {
       continue;
      }
      m_ht.Add(m_tb.ID.Replace("F_","").ToLower(),m_tb);
     } // EndOf [ if ( ( tb.HasControls() ) &&(!( tb is UserControl )))]
    } // End Of Loop For {tb}
   } // End Of Loop For {Ctrl} 
   return m_ht;
  }//End Of Function 

        2、如果是XML,我們就可通控制項ID去尋找控制項,Page的FindControl()去擷取控制項和值。

        問題3:如何形成SQL語句?
        可以根據二種影射關係,SQL的規則進行分拆,研究一下Insert ,Update,Delete,Select 語句。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.