电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

常见的Datagrid错误研究VIP免费

常见的Datagrid错误研究_第1页
1/10
常见的Datagrid错误研究_第2页
2/10
常见的Datagrid错误研究_第3页
3/10
第1页共10页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共10页常见Datagrid错误MarcieRobillardDatagridGirl.com2003年11月适用于:Microsoft®ASP.NET摘要:学习如何避免在使用ASP.NETDatagrid控件进行开发时可能发生的一些常见错误(本文包含一些指向英文站点的链接)。目录可以使用Datagrid创建列表数据而没有使用忘记在Page_Load事件中检查IsPostBack需要更大的灵活性时,仍坚持使用自动生成的列尝试仅使用控件ID来引用Datagrid项目中的控件可以(或应该)使用分页而没有使用忘记在每个Datagrid事件中执行.DataBind()调用,从而导致回发运行时不必要地在Datagrid中动态创建Datagrid控件或列持续使用大型ViewState使用ItemDataBound或ItemCreated事件时,忘记检查适当的ListItemType需要对生成的HTML有更多的控制时,过多地使用了Datagrid(Repeater也许是更好的选择)参考资料Datagrid控件是Microsoft®ASP.NET中功能最强、用途最广的Web控件之一,这一点已经得到了ASP.NET权威人士的认同。虽然第2页共10页第1页共10页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共10页Datagrid控件易于使用,但同样易于给使用者带来麻烦。以下是许多人所犯的一些错误,这些人包括从初学者到富有经验的.NET专家。您可以看到许多苦闷的使用者在ASP.NET新闻组和论坛就这些错误提出问题。遵循本文概述的相当简单的步骤,可以帮助您避免这些错误,并节约大量的开发时间。可以使用Datagrid创建列表数据而没有使用我知道您不会再使用如下所示的代码,但ASP.NET领域中许多守旧的用户仍在继续使用它们:Response.Write("")WhileMyDataReader.Read()Response.Write("")Response.Write("")Response.Write("")LoopResponse.Write("
")Response.Write(MyDataReader(0))Response.Write("
")可以对以上代码进行简化,使其仅为:,并调用.DataBind()方法。即使需要对HTML输出进行特殊的控制,您也可以在用户界面上记录集的内容重复出现的情况下,使用某个数据Web控件。忘记在Page_Load事件中检查IsPostBack最常见的错误之一是忘记在数据绑定之前检查页面的IsPostBack条件。例如,Datagrid处于“Edit”(编辑)模式时,忽略该项检查第3页共10页第2页共10页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共10页将导致已编辑的值被数据源中的原始值覆盖。然而,该规则至少有一个主要的例外,请参阅持续使用大型ViewState。以下是包含IsPostBack检查的一个典型Page_Load事件。BindGrid()是一个例程,用于导入并设置Datagrid的数据源,并调用DataBind()方法。SubPage_LoadIfNotIsPostBackThenBindGrid()EndIfEndSub需要更大的灵活性时,仍坚持使用自动生成的列如果Datagrid所处的环境需要任何一种特殊格式,或是需要使用Datagrid中的其他任何Web控件,那么必须关闭AutoGenerateColumns。将AutoGenerateColumns属性的设置保持为“True”(默认设置)的做法,仅在最简单的Datagrid方案中有效。但对几乎所有实际的应用程序,必须将该属性设置为“False”,并在Datagrid声明的段中明确地指定列。MicrosoftVisualStudio®.NET用户可以使用属性生成器以图形化的方式创建这些列。注意:如果将AutoGenerateColumns的设置保持为“True”,并且在Datagrid的段中指定了列,那么最终将得到对列的重复设置。系统将首先显示特别声明的列,随后是所有自动生成的列。尝试仅使用控件ID来引用Datagrid项目中的控件许多人没有认识到,对于Datagrid的TemplateColumn下的ItemTemplate中的控件(例如带有“MyTextBox”ID的TextBox控件),不能在后面的代码或是在ASPX页面的
确认删除?