ASP.NET 2.0数据教程之四十:自定义DataList编辑界面
="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)” 选项。 图 10: e Categories 和Suppliers DropDownLists包含 “ (None)” 为了将“(None)” 保存为数据库NULL值,我们 需要回到UpdateCommand事件处理。将categoryIDValue和supplierIDValue变量设 为可为空的整型,并在DropDownList的SelectedValue的值不为空字符串时才为它 们赋值。 C#
完成这个后,如果用户在 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |