為GridView新增記錄的功能_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:淺析.Net Micro Framework 4.0正式開源
      從今年開始5月份,微軟就已宣布.Net Micro Framework將開源,目前這一承諾已兌現,現在源碼代碼已經可以從官方網站上進行下載了。并且.Net Micro Framework部門也已經從研究院轉移到產品部門中來,.Net Micro Framework正式成為.Net 產品家族中的一員。 下載

         在 ASP.NET 2.0 中,GridView 支持修改/刪除記錄,但卻不支持新增記錄的功能,大多數人建議用 FormView 來完成增加記錄的功能,但是 FormView 和 GridView 不是同一個表格,所以無法在同一個頁面的同一個表格中顯示。如果故意將 FormView 或自己的一堆于用新增功能的控件使用普通的表格組裝起來,那么會碰到一個很麻煩的問題,即兩個表格的列寬如何協調一致,大多數情況下,大家在做表格的時候,表格中各列的寬度都是自動調整的,所以強行指定寬度在很多情況下并不適用。  
      通過實踐,想出了一種辦法,主要步驟如下所示:
      1) 在 GridView 的 EmptyDataView 中,放置一個普通的Html Table,以便在無數據時依舊顯示表頭,假設 ID 為 tbHeader,為下面用于新增功能的 Form 的各個控件提供說明; 

      2) 在 GridView 下面,放置一個普通的 HTML 表格,列數和 GridView保持一致,只有一行,內部放入用于新增功能的各個控件,假設 ID 為 tbForm 

      3) 在客戶端中加入腳本,在頁面顯示到客戶端時,利用 Javascript 將兩個表格強行合并到一起,這樣就會在 GridView 的最下面多出一行,其中有輸入控件和“添加”鏈接(按鈕),主要代碼如下: 

        

      function MergeTable(source,dest){    var row;    var cell;    var sourceTb = document.all(source);    var destTb = document.all(dest);    for (var i=0; i<sourceTb.rows.length; i++)    {         row = document.createElement("TR");         for (var j=0; j<sourceTb.rows(i).cells.length; j++)         {             cell = document.createElement("TD");             row.appendChild(cell);            //復制對象            for(k=0;k<sourceTb.rows(i).cells(j).all.length;k++)                cell.appendChild(sourceTb.rows(i).cells(j).all.item(k));        }        destTb.tBodies(0).appendChild(row);    }    for (var i=sourceTb.rows.length-1; i>=0; i--)    {        sourceTb.deleteRow(i)    }}    注意:要根據表格中是否具有數據來合并不同的表格,如果沒有數據,要合并 EmptyDataView 中的 Html Table (即 tbHeader)與用于新增的表格(tbForm),如果有數據,則要合并 GridView 本身(可以用 GridView.ClientID來獲取其客戶端 ID)和用于新增加的表格(tbForm)。簡單的做法是檢查頁面中有沒有 tbHeader 以確定表格中是否包含數據,代碼如下所示: 

      function ChangeTableLayout() 

           if(document.all(’tbHeader’) == null) 
              MergeTable(’tbForm’,’<%=myGridView.ClientID %>’); 
          else 
              MergeTable(’tbForm’,’tbHeader’); 


          4) 如果是 AJAX 環境,上述腳本有可能不被執行,可以調用 Sys.Application.load.add ( JavaScriptFunction) 來強制執行腳本,來合并表格,主要代碼如下: 

      scriptmanager myScriptManager = ScriptManager.GetCurrent(Page); 
      if (myScriptManager.IsInPartialRenderingMode) 

          Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowFullTable1", "ChangeTableLayout();\n", true); 

      else 

          Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowFullTable2", "Sys.Application.load.add (ChangeTableLayout);\n", true); 


          注:上述代碼中的 ChangeTableLayout 為客戶端腳本函數的名稱,其中調用第3步驟中的代碼,上述代碼在 Atlas 中通過,在 ASP.NET AJAX Beta 上尚末測試。 


      分享:淺析電子商務的框架
      前些陣子照著《Pro ASP.NET 2.0 E-Commerce in C#2005》書編輯了一個商務系統網站,想總結一下學習到的所學的知識。 該網站具有一般商務網站的特征 這里先講講他的框架 數據訪問層 用的的存儲過程操作數據庫的存儲,有一個Shop.DataAccess類庫專門(注意我這

      來源:模板無憂//所屬分類:.Net教程/更新時間:2012-06-29
      相關.Net教程