四十九:为GridView控件添加RadioButton
导言:
  GridView控件提供了大量的内置功能。它包含了一系列的域(field)来显示诸如text、images、hyperlinks和buttons。另外它支持模板(template)用于用户自定义界面。我们可以构建这样一个GridView控件,用户仅需要点击控件里的一个按钮,每一条记录行都可以选择、编辑、删除。除了控件本身内置的功能外,在某些情况下,我们添加一些额外的、控件没有内置的功能。在本章及接下来的2篇教程里我们将探讨如何优化GridView,以支持额外的功能。
  本篇及接下来的教程将主要探讨优化行选择程序(row-selection process),就像在教程《使用 GridView和DetailView实现的主/从报表》里考察的一样,我们在GridView控件里添加一个包含选择按钮的命令域(CommandField),点击该按钮后产生回传(postback),所选行的index值传给GridView控件的SelectedIndex属性。在那篇教程里我们看到了如何使用该功能显示所选行的详细信息。
  除了Select button,我们经常在用户界面包含radio button和checkbox用于选择记录。在某些
情况下我们可以对GridView扩充,在每条记录里用radio button或checkbox替换掉Select button。比如,我们只希望选择GridView记录中的一条时,用radio button比用Select button好;再比如,当用户要选择多条记录时——就像在邮箱里同时删除几份邮件一样,用checkbox是最好的。本教程先考察为GridView添加radio buttons,再考察添加checkboxes。
第一步:创建优化GridView的Web页面
  在开始之前让我们在网站项目里创建一个本节及后面2节要用到的ASP.NET页面。新建一个名为EnhancedGridView的文件夹,然后,添加如下所示的页面,确保使用Site.master母版。
Default.aspx
RadioButtonField.aspx
CheckBoxField.aspx
InsertThroughFooter.aspx

图1:添加相关页面
  像其它文件夹一样,Default.aspx页面将显示本节的所有教程。记得用户控件SectionLevelTutorialListing.ascx提供该功能,从解决方案管理器里将其拖到Default.aspx页面上。

图2:添加用户控件SectionLevelTutorialListing.ascx
  最后,将这4篇教程添加到Web.sitemap文件里,特别的,加在“Using the SqlDataSource Control” <siteMapNode>后:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<siteMapNode
 title="Enhancing the GridView"
 url="~/EnhancedGridView/Default.aspx"
 description="Augment the user experience of the GridView control.">
 <siteMapNode
 url="~/EnhancedGridView/RadioButtonField.aspx"
 title="Selection via a Radio Button Column"
 description="Explore how to add a column of radio buttons in the GridView." />
checkbox和radiobutton的区别 <siteMapNode
 url="~/EnhancedGridView/CheckBoxField.aspx"
 title="Selection via a Checkbox Column"
 description="Select multiple records in the GridView by using a column of
  checkboxes." />
 <siteMapNode
 url="~/EnhancedGridView/InsertThroughFooter.aspx"
 title="Add New Records through the Footer"
 description="Learn how to allow users to add new records through the
  GridView's footer." />
</siteMapNode>
完成后,花几分钟在浏览器查看该系列教程,如图所示:

图3:Site Map里完整地列出了本系列教程
第2步:在GridView控件里显示供应商
  让我们创建一个GridView控件,用于显示来自美国的供应商列表,同时每行记录包含一个r
adio button。当点击radio button后,用户将查看到供应商提供的产品。在开始具体研究如何实现以前,我们先创建一个显示供应商的GridView。
  在文件夹EnhancedGridView里打开adioButtonField.aspx页面,进入设计模式,从工具箱拖一个GridView到页面。设其ID为Suppliers,在智能标签里选“创建新数据源”,特别的,我们选用ObjectDataSource,命名为SuppliersDataSource,然后选用SuppliersBLL 。

图4:创建一个名为SuppliersDataSource的ObjectDataSource

图5:设置该ObjectDataSource使用SuppliersBLL类
因为我们只想列出来自美国的供应商,在SELECT选项卡的下拉列表里选择 GetSuppliersByCountry(country)方法。

图6:设置该ObjectDataSource使用SuppliersBLL类(原文如此)
在UPDATE选项卡选择“(None)”,点下一步

图7:设置该ObjectDataSource使用SuppliersBLL类(原文如此)
  因为GetSuppliersByCountry(country)方法需要接受一个参数,向导提示我们设置参数源,在这里我们指定一个“硬编码”值(就本例而言,我们指定USA),在数据源下拉列表里选“No
ne”,在指定值文本框输入“USA”。点“完成”结束向导设置。

图8:为参数country使用默认值“USA”
  只保留GridView里的CompanyName, City和Country三列(BoundFields),其余的全部删除。同时将CompanyName列的HeaderText属性改为“Supplier”。设置完以后, GridView和ObjectDataSource控件的声明代码看起来和下面的差不多:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。