處理ASP.Net開發常見Datagrid錯誤

iDotNetSpace發表於2009-02-03
雖然 Datagrid 控制元件易於使用,但同樣易於給使用者帶來麻煩。以下是許多人所犯的一些錯誤,這些人包括從初學者到富有經驗的 .NET 專家。您可以看到許多苦悶的使用者在 ASP.NET 新聞組和論壇就這些錯誤提出問題。遵循本文概述的相當簡單的步驟,可以幫助您避免這些錯誤,並節約大量的開發時間。

  可以使用 Datagrid 建立列表資料而沒有使用

  我知道您不會再使用如下所示的程式碼,但 ASP.NET 領域中許多守舊的使用者仍在繼續使用它們:

  可以對以上程式碼進行簡化,使其僅為:

  並呼叫 .DataBind() 方法。即使需要對 HTML 輸出進行特殊的控制,您也可以在使用者介面上記錄集的內容重複出現的情況下,使用某個資料 Web 控制元件。

  忘記在 Page_Load 事件中檢查 IsPostBack

  最常見的錯誤之一是忘記在資料繫結之前檢查頁面的 IsPostBack 條件。例如,Datagrid 處於“Edit”(編輯)模式時,忽略該項檢查將導致已編輯的值被資料來源中的原始值覆蓋。

  以下是包含 IsPostBack 檢查的一個典型 Page_Load 事件。BindGrid() 是一個例程,用於匯入並設定 Datagrid 的資料來源,並呼叫 DataBind() 方法。

  需要更大的靈活性時,仍堅持使用自動生成的列

  如果 Datagrid 所處的環境需要任何一種特殊格式,或是需要使用 Datagrid 中的其他任何 Web 控制元件,那麼必須關閉 AutoGenerateColumns。將 AutoGenerateColumns 屬性的設定保持為“True”(預設設定)的做法,僅在最簡單的 Datagrid 方案中有效。但對幾乎所有實際的應用程式,必須將該屬性設定為“False”,並在 Datagrid 宣告的 段中明確地指定列。Microsoft Visual Studio® .NET 使用者可以使用屬性生成器以圖形化的方式建立這些列。

  注意:如果將 AutoGenerateColumns 的設定保持為“True”,並且在 Datagrid 的 段中指定了列,那麼最終將得到對列的重複設定。系統將首先顯示特別宣告的列,隨後是所有自動生成的列。

  嘗試僅使用控制元件 ID 來引用 Datagrid 專案中的控制元件

  許多人沒有認識到,對於 Datagrid 的 TemplateColumn 下的 ItemTemplate 中的控制元件(例如帶有“MyTextBox”ID 的 TextBox 控制元件),不能在後面的程式碼或是在 ASPX 頁面的

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-545135/,如需轉載,請註明出處,否則將追究法律責任。

相關文章