快速业务通道

ASP.NET 2.0数据教程之四十:自定义DataList编辑界面

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
="Categories" runat="server" DataSourceID="CategoriesDataSource"
DataTextField="CategoryName" DataValueField="CategoryID"
SelectedValue=''<%# Eval("CategoryID") %>'' AppendDataBoundItems="True">
<asp:ListItem Value="" Selected="True">(None) </asp:ListItem>
</asp:DropDownList>
...
<asp:DropDownList ID="Suppliers" runat="server" DataSourceID="SuppliersDataSource"
DataTextField="CompanyName" DataValueField="SupplierID"
SelectedValue=''<%# Eval("SupplierID") %>'' AppendDataBoundItems="True">
<asp:ListItem Value="" Selected="True">(None) </asp:ListItem>
</asp:DropDownList>

注意 :为DropDownList 添加ListItems可以通过设计器或者声明语法来完成。当添加 一个表示数据库空值的item时,要确保是通过声明语法来完成的。如果你使用设 计器的ListItem集合编辑器,当赋空字符串时,产生的声明语法会忽略Value的设 置,产生想<asp:ListItem>(None)</asp:ListItem>这样的语句。这 个看起来并没有什么关系,但是缺少Value会让DropDownList 使用Text属性的值 作为Value。这意味着当NULL ListItem被选择时,“(None)” 会被 赋给product的CategoryID或SupplierID字段,这会引起异常。而显式的将Value 设为“”,当NULL ListItem被选择时一个空值会被赋给product的 CategoryID或SupplierID字段。

现在浏览该页。当编辑product时,注意 Categories和Suppliers DropDownLists 开头都包含一个“(None)” 选项。

ASP.NET 2.0数据教程之四十:自定义DataList编辑界面

图 10: e Categories 和Suppliers DropDownLists包含 “ (None)”

为了将“(None)” 保存为数据库NULL值,我们 需要回到UpdateCommand事件处理。将categoryIDValue和supplierIDValue变量设 为可为空的整型,并在DropDownList的SelectedValue的值不为空字符串时才为它 们赋值。

C#

int? categoryIDValue = null;
if (! string.IsNullOrEmpty(categories.SelectedValue))
categoryIDValue = Convert.ToInt32(categories.SelectedValue);
int? supplierIDValue = null;
if (!string.IsNullOrEmpty(suppliers.SelectedValue))
supplierIDValue = Convert.ToInt32 (suppliers.SelectedValue);

完成这个后,如果用户在 DropDownList里选择“(None)” 时,一个空值将被传给 UpdateProduct BLL方法,它相当于数据库的NULL值。

总结

本章我 们学习了如何为DataList创建一个更复杂的编辑界面,它包含三种不同的web控件 — 一个TextBox,两个DropDownLists和一个CheckBox —并且包含验 证控件。当创建编辑界面时,不管使用什么控件,步骤都是一样的:先为 EditItemTemplate添加控件;将字段值通过绑定语法赋给对应的web控件的属性; 在UpdateCommand事件处理中编程访问web控件和它们的属性,并将值传给BLL。

当创建编辑界面时,无论它仅仅是由TextBox组成还是由不同的web控件组 成,要确保正确的处理数据库NULL值。当处理NULL时,不仅需要在编辑界面正确 显示已经存在的NULL值,还需要提供输入NULL值的方法。对DataLists里的 DropDownLists 来说,这通常意味着需要添加一个Value属性被显式设为空字符串 (Value="")的ListItem,然后在UpdateCommand事件处理里判断NULL ListItem是否被选中。

祝编程愉快!

本文配套源码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号