您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 药学 > 四十九为GridView控件添加RadioButton
在ASP.NET2.0中操作数据之四十九:为GridView控件添加RadioButton作者:heker2007字体:[增加减小]类型:转载时间:2016-05-16我要评论本文主要讲解ASP.NET2.0为GridView的每一行添加RadioButton具体方法,并配合Literal控件实现单选的目的。导言:GridView控件提供了大量的内置功能。它包含了一系列的域(field)来显示诸如text、images、hyperlinks和buttons。另外它支持模板(template)用于用户自定义界面。我们可以构建这样一个GridView控件,用户仅需要点击控件里的一个按钮,每一条记录行都可以选择、编辑、删除。除了控件本身内置的功能外,在某些情况下,我们添加一些额外的、控件没有内置的功能。在本章及接下来的2篇教程里我们将探讨如何优化GridView,以支持额外的功能。本篇及接下来的教程将主要探讨优化行选择程序(row-selectionprocess),就像在教程《使用GridView和DetailView实现的主/从报表》里考察的一样,我们在GridView控件里添加一个包含选择按钮的命令域(CommandField),点击该按钮后产生回传(postback),所选行的index值传给GridView控件的SelectedIndex属性。在那篇教程里我们看到了如何使用该功能显示所选行的详细信息。除了Selectbutton,我们经常在用户界面包含radiobutton和checkbox用于选择记录。在某些情况下我们可以对GridView扩充,在每条记录里用radiobutton或checkbox替换掉Selectbutton。比如,我们只希望选择GridView记录中的一条时,用radiobutton比用Selectbutton好;再比如,当用户要选择多条记录时——就像在邮箱里同时删除几份邮件一样,用checkbox是最好的。本教程先考察为GridView添加radiobuttons,再考察添加checkboxes。第一步:创建优化GridView的Web页面在开始之前让我们在网站项目里创建一个本节及后面2节要用到的ASP.NET页面。新建一个名为EnhancedGridView的文件夹,然后,添加如下所示的页面,确保使用Site.master母版。Default.aspxRadioButtonField.aspxCheckBoxField.aspxInsertThroughFooter.aspx图1:添加相关页面像其它文件夹一样,Default.aspx页面将显示本节的所有教程。记得用户控件SectionLevelTutorialListing.ascx提供该功能,从解决方案管理器里将其拖到Default.aspx页面上。图2:添加用户控件SectionLevelTutorialListing.ascx最后,将这4篇教程添加到Web.sitemap文件里,特别的,加在“UsingtheSqlDataSourceControl”siteMapNode后:?1234567891011siteMapNodetitle=EnhancingtheGridViewurl=~/EnhancedGridView/Default.aspxdescription=AugmenttheuserexperienceoftheGridViewcontrol.siteMapNodeurl=~/EnhancedGridView/RadioButtonField.aspxtitle=SelectionviaaRadioButtonColumndescription=ExplorehowtoaddacolumnofradiobuttonsintheGridView./siteMapNodeurl=~/EnhancedGridView/CheckBoxField.aspxtitle=SelectionviaaCheckboxColumndescription=SelectmultiplerecordsintheGridViewbyusingacolumnofcheckboxes./siteMapNodeurl=~/EnhancedGridView/InsertThroughFooter.aspxtitle=AddNewRecordsthroughtheFooter1213141516171819description=LearnhowtoallowuserstoaddnewrecordsthroughtheGridView'sfooter.//siteMapNode完成后,花几分钟在浏览器查看该系列教程,如图所示:图3:SiteMap里完整地列出了本系列教程第2步:在GridView控件里显示供应商让我们创建一个GridView控件,用于显示来自美国的供应商列表,同时每行记录包含一个radiobutton。当点击radiobutton后,用户将查看到供应商提供的产品。在开始具体研究如何实现以前,我们先创建一个显示供应商的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),在数据源下拉列表里选“None”,在指定值文本框输入“USA”。点“完成”结束向导设置。图8:为参数country使用默认值“USA”只保留GridView里的CompanyName,City和Country三列(BoundFields),其余的全部删除。同时将CompanyName列的HeaderText属性改为“Supplier”。设置完以后,GridView和ObjectDataSource控件的声明代码看起来和下面的差不多:?123456789101112asp:GridViewID=Suppliersrunat=serverAutoGenerateColumns=FalseDataKeyNames=SupplierIDDataSourceID=SuppliersDataSourceEnableViewState=FalseColumnsasp:BoundFieldDataField=CompanyNameHeaderText=SupplierSortExpression=CompanyName/asp:BoundFieldDataField=CityHeaderText=CitySortExpression=City/asp:BoundFieldDataField=CountryHeaderText=CountrySortExpression=Country//Columns/asp:GridViewasp:ObjectDataSourceID=SuppliersDataSourcerunat=serverOldValuesParameterFormatString=original_{0}SelectMethod=GetSuppliersByCountryTypeName=SuppliersBLLSelectParametersasp:ParameterDefaultValue=USAName=countryType=String/13141516171819/SelectParameters/asp:ObjectDataSource在本篇教程,当点击某个供应商时,将在本业或另一页显示该供应商提供的产品。为达到该目的,我们在页面添加2个ButtonWeb控件。ID分别为ListProducts和SendToProducts,当点击ListProducts按钮时,发生回传(postback),接着将在本页面显示该供应商的产品,当点击SendToProducts按钮时,将会链接到另一个页面,显示该供应商的产品。图9显示了GridView控件和添加的两个ButtonWeb控件。图9:显示供应商的Name,City和Country信息第3步:添加RadioButtons列至此,GridView里包含companyname,city和country三列,但还缺少radiobuttons列。不幸的是GridView控件并不包含内置的RadioButtonField,因此只有我们自己手动添加。我们可以添加一个模板(TemplateField)并在其ItemTemplate模板里显示一个radiobutton。这样的话就为GridView控件的每一行记录添加了一个radiobutton。我们首先可能会想到直接在TemplateField的ItemTemplate模版里添加一个RadioButtonWeb控件。不错,这样将为每一行添加radiobutton,但是这些radiobutton不能聚合,因此不能形成互斥关系。造成的后果是,最终用户可以在GridView控件里同时选定多个radiobutton按钮。虽然这样做不能到达我们期望的要求,不过还是值得我们花时间来考察一下为什么这些radiobutton不能聚合。首先,为GridView添加一个TemplateField,放置在最左边,然后智能标签里选“编辑模板”,进入TemplateField的ItemTemplate模板,从工具箱拖一个RadioButton控件到模板(见图10),设置其ID为RowSelector,GroupName属性为SuppliersGroup。图10:在ItemTemplate模板添加一个RadioButton控件完成设置后,GridView的代码看起来应和下面的差不多:?12asp:GridViewID=Suppliersrunat=serverAutoGenerateColumns=FalseDataKeyNames=SupplierIDDataSourceID=SuppliersDataSourceEnableViewState=False3456789101112131415161718Columnsasp:TemplateFieldItemTemplateasp:RadioButtonID=RowSelectorrunat=serverGroupName=SuppliersGroup//ItemTemplate/asp:TemplateFieldasp:BoundFieldDataField=CompanyNameHeaderText=SupplierSortExpression=CompanyName/asp:BoundFieldDataField=CityHeaderText=CitySortExpression=City/asp:BoundFieldDataField=CountryHeade
本文标题:四十九为GridView控件添加RadioButton
链接地址:https://www.777doc.com/doc-2546627 .html