ASP.NET中Datagrid常見錯誤
2006/10/13 9:38:53
摘要:學習如何避免在使用 ASP.NET Datagrid 控件進行開發時可能發生的一些常見錯誤。

   Datagrid 控件是 Microsoft? ASP.NET 中功能最強、用途最廣的 Web 控件之一,這一點已經得到了 ASP.NET 權威人士的認同。雖然 Datagrid 控件易于使用,但同樣易于給使用者帶來麻煩。以下是許多人所犯的一些錯誤,這些人包括從初學者到富有經驗的 .NET 專家。您可以看到許多苦悶的使用者在 ASP.NET 新聞組和論壇就這些錯誤提出問題。遵循本文概述的相當簡單的步驟,可以幫助您避免這些錯誤,并節約大量的開發時間。

   可以使用 Datagrid 創建列表數據而沒有使用

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

Response.Write("<table>")
While MyDataReader.Read()
Response.Write("<tr>")
Response.Write("<td>")
Response.Write(MyDataReader(0))
Response.Write("</td>")
Response.Write("</tr>")
Loop
Response.Write("</table>")

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

<asp:datagrid runat="server" datasource="MyDataReader"/>

   并調用 .DataBind() 方法。即使需要對HTML輸出進行特殊的控制,您也可以在用戶界面上記錄集的內容重復出現的情況下,使用某個數據 Web 控件。

   忘記在 Page_Load 事件中檢查 IsPostBack

   最常見的錯誤之一是忘記在數據綁定之前檢查頁面的 IsPostBack 條件。例如,Datagrid 處于“Edit”(編輯)模式時,忽略該項檢查將導致已編輯的值被數據源中的原始值覆蓋。然而,該規則至少有一個主要的例外,請參閱持續使用大型 ViewState。

   以下是包含 IsPostBack 檢查的一個典型 Page_Load 事件。BindGrid() 是一個例程,用于導入并設置 Datagrid 的數據源,并調用 DataBind() 方法。

Sub Page_Load
If Not IsPostBack Then
BindGrid()
End If
End Sub

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

   如果 Datagrid 所處的環境需要任何一種特殊格式,或是需要使用 Datagrid 中的其他任何 Web 控件,那么必須關閉 AutoGenerateColumns。將 AutoGenerateColumns 屬性的設置保持為“True”(默認設置)的做法,僅在最簡單的 Datagrid 方案中有效。但對幾乎所有實際的應用程序,必須將該屬性設置為“False”,并在 Datagrid 聲明的 <columns></columns> 段中明確地指定列。Microsoft Visual Studio? .NET 用戶可以使用屬性生成器以圖形化的方式創建這些列。

   注意:如果將 AutoGenerateColumns 的設置保持為“True”,并且在 Datagrid 的 <columns> 段中指定了列,那么最終將得到對列的重復設置。系統將首先顯示特別聲明的列,隨后是所有自動生成的列。

   嘗試僅使用控件 ID 來引用 Datagrid 項目中的控件

   許多人沒有認識到,對于 Datagrid 的 TemplateColumn 下的 ItemTemplate 中的控件(例如帶有“MyTextBox”ID 的 TextBox 控件),不能在后面的代碼或是在 ASPX 頁面的 <script> 段中用如下所示的代碼來直接調用該控件:

Dim MyValue As String = MyTextBox.Text

   該代碼將導致可怕的“名稱‘MyTextBox'沒有聲明”錯誤。

   因為 Datagrid 是由多個行(項目)組成的,所以數據源中的每一行實際都會有一個單獨的“MyTextBox”實例。ASP.NET 在每個控件的 ID 前面加上該控件層次結構中每個命名容器的 ID,這樣 Textbox 將具有唯一的 ID,與頁面中所有其他控件的 ID 都不相同。例如,如果 MyTextBox 處于 DataGrid1 中,那么生成的 ID 將是 DataGrid1:_ctl2:MyTextBox。“_ctl2”代表 MyTextBox 所處的當前行。

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 国产成人亚洲精品蜜芽影院| 婷婷六月天在线| 国产激情з∠视频一区二区| ol丝袜高跟秘书在线观看视频| 日韩小视频在线| 动漫做羞羞的视频免费观看| 8天堂资源在线官网| 日本午夜精品一区二区三区电影 | 天天躁日日躁狠狠躁av麻豆 | 秦先生第15部大战宝在线观看| 国产亚洲视频在线观看网址| 亚洲成a人片在线观看精品| 成年女人免费视频播放体验区| 亚洲砖码砖专无区2023| 精品国产一区二区三区香蕉事 | 国产aa免费视频| 91蝌蚪在线播放| 女人隐私秘视频黄www免费| 五十路亲子中出中文字幕| 永久免费无码网站在线观看个| 六月婷婷中文字幕| 老司机美女一级毛片| 国产剧果冻传媒星空在线播放| av无码免费看| 性欧美18-19性猛交| 亚洲一区在线观看视频| 精品亚洲一区二区三区在线播放| 国产精品一区二区久久乐下载| 一级看片免费视频囗交| 校花主动掀开内裤给我玩| 亚洲欧美日韩精品久久奇米色影视| 男女肉粗暴进来120秒动态图| 四虎影视永久免费观看地址| jizz性欧美2| 成人18视频日本| 五月天婷五月天| 泰国一级淫片免费看| 免费无码又爽又黄又刺激网站| 黑人性受xxxx黑人xyx性爽| 国产精品欧美日韩一区二区| 99久久精品美女高潮喷水|