快速业务通道

ASP.NET 2.0数据操作教程之二十:定制数据修改界面

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
uppliers表中 。ProductsRow对象中的CategoryID和SupplierID可以读取和写入,而 CategoryName和SupplierName属性则标记为只读。

由于CategoryName和 SupplierName的只读状态,相应绑定列的ReadOnly属性也被置为true,防止编辑 某行时它们的值被修改。尽管也可以通过设置ReadOnly属性为false,使其在编辑 状态将这些绑定列转为TextBox,但是这样以来当用户尝试更新产品信息时系统就 会抛出异常,因为UpateProduct重载中并不接受CategoryName和SupplierName参 数。事实上,我们也不想编写这种重载方法,原因如下:

1. Products表 没有SupplierName和CategoryName字段,而是对应的外键SupplierID和 CategoryID。因此,我们希望在更新方法中传递外键ID,而不是查找外键表中的 值。

2. 要求用户键入supplier或者category的名字也很不合理,因为这 要求用户必须知道合法的category和supplier,并且拼写正确无误。

我们 打算在只读模式Supplier和category列分别显示了分类和提供商的名字,而在编 辑时,通过下拉列表显示可用选项。这样以来,用户可以快速查看有效的 category和supplier并且可以很便捷直观的进行选择。

要实现这一点,需 要将SupplierName和CategoryName对应的绑定列转换为模板列,在ItemTemplate 模板中显示SupplierName和CategoryName,而EidtItemTemplate模板则使用 DropDownList控件列出有效的cagegory和supplier。

添加Categories和 Suppliers 的DropDownList控件

我们要先将SupplierName和CategoryName 绑定列转换为模板列:点击GridView智能标记中的‘编辑列’链接; 选择左下的BoundField;点击“将此字段转换为TemplateField”链接 ,转换过程将创建一个模板列,包括ItemTemplate和EditItemTemplate,最终的 元素标记大致如下:

<asp:TemplateField HeaderText="Category" SortExpression="CategoryName">
<EditItemTemplate>
<asp:Label ID="Label1" runat="server" Text=''<%# Eval ("CategoryName") %>''></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text=''<%# Bind("CategoryName") % >''></asp:Label>
</ItemTemplate>
</asp:TemplateField>

由于绑定列标记为只读, ItemTemplate和EditItemTemplate都将用Label控件的Text属性绑定显示相关数据 (如上面的CategoryName)。因此需要修改EditItemTemplate模板,用 DropDownList控件来替换原来的Label控件。

像上节教程讲的,即可在设 计器中编辑模板也可直接修改模板的元素标记。要在设计器中修改,可以通过 GridView的智能标记点击“编辑模板”链接并选择Category字段的 EditItemTemplate模板。删除Label控件用DropDownList控件代替,并设置 DropDownList的ID属性为Categories。

ASP.NET 2.0数据操作教程之二十:定制数据修改界面

图5:删除EditItemTemplate模板中的TextBox并增加一个 DropDownList

下一步我们需要为DropDownList绑定category。从智能标记 中点击“选择数据源”链接并选择创建一个新的ObjectDataSource, 命名为CategoriesDataSource。

ASP.NET 2.0数据操作教程之二十:定制数据修改界面

图6:创建一个新的ObjectDataSource控件 CategoriesDataSource

为了使ObjectDataSource显示所有的category,我 们将它与CategoriesBLL类的GetCategories()方法进行绑定。

ASP.NET 2.0数据操作教程之二十:定制数据修改界面

图7:将ObjectDataSource控件用GategoriesBLL的GetCategories()方 法进行绑定

最后,配置DropDownList,用CategoryName字段作为显示字段 而CategoryID作为Value字段。

ASP.NET 2.0数据操作教程之二十:定制数据修改界面

图8:用CategoryName作为显示字段并用CategoryID作为V

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号