当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP.NET中Datagrid常见错误

ASP
Microsoft SQL Server 7.0安全问题
最优化ASP程序性能
Access数据库操作中出现的怪现象
将ASP代码移植为VB COM组件-1
将ASP代码移植为VB COM组件-2
将ASP代码移植为VB COM组件-3
将ASP代码移植为VB COM组件-4
使用ASP常见问题解答
数据库聊天室的“无刷新”技术要点
把ASP移植到ASP+
如何使用XQI?
一个普通的数据库例子源源程序
让Session对象在不同域名下实现共享
无组件图片与文本同步存入数据库的最简单的办法
在WAP网站上建立反馈表单
如何增强ASP程序性能(4)
关于在浏览器中执行*.exe文件的深入探讨!
用RecordSet实现分页(by Daniel Adrian)
remote script文档(转载自微软)(九)
Microsoft 脚本编码器Script Encoder介绍(1)全中文

ASP.NET中Datagrid常见错误


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 122 ::
收藏到网摘: n/a

摘要:学习如何避免在使用 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> 段中指定了列,那么最终将得到对列的重复设置。系统将首先显示特别声明的列,随后是所有自动生成的列。