前一小节描述了一种使用参数的原始方法──在URL之后输入参数开通的方法是使用一个数据绑定控件为其他数据绑定控件创建参数这在术语中称为ControlParameters本节演示两种非常普遍的情况在第一种情况中DropDownList控件决定了在GridView控件中显示哪条(些)记录在第二种情况中对GridView控件中的记录进行选择以使页面在DetailsView控件中显示该记录的更多字段这些情况称为主一从场景在主数据绑定控件中进行选择将为从数据绑定控件的数据源控件的WHERE子句设立一个值绝大多数情况下主从数据绑定控件分别使用单独的数据源控件
在主控件中只需使用一个特定的属性如果主控件是ListBox或DropDownIist必须将AutoPostBack属性设置为True以便在主控件中做出选择之后ASPNET 将触发页面进行刷新从而使子控件显示变化后的记录记住ListBox和DropDownList控件有两个字段参数第一个是要显示的字段(DataTextField属性)而第二个是要在页面的代码中使用的字段(DataValueField属性)例如这允许您在列表框中向用户显示球员的姓但在SQL语句中则使用更有用的值PlayerID如果主控件是GridView控件可以打开它的智能任务面板勾选Enable Selection复选框以使VWD为控件中的每条记录创建一个新列该列带有Select按钮单击该按钮ASPNET将对选中的记录做出反应如您稍后所见
在子控件中必须在该控件的数据源控件的WHERE子句中设置一个参数在前一小节中您使用Configure Data Source Control向导的Add WHERE Clause对话框将参数设置在查询字符串的一个字段中可以再次使用该向导但这次在Add WHERE Clause对话框中将列设置为等于某个控件(而不是查询字符串)中的值该向导将显示一个控件列表可以从中进行选择在选择的控件中决定使用哪个值通常是SelectionValue
在下面的试一试练习中您将练习两个控件组合在第一个组合中使用DetaiisView控件显示在GridView控件中选择的数据的其他字段在第二个组合中使用DropDownList控件在GridView控件内仅显示特定的记录
()现在创建最终版本的Fixturesaspx页面将已存在的Fixturesaspx文件移动到一个自己创建的文件夹中并将其命名为OIdPages由于创建页面的步骤非常迅速和简单(而且是一次很好的复习)您将从头开始使用Master页面创建一个新的Web Form并将其命名为Fixturesaspx将其VB代码保存在一个单独的文件中切换到Design View
()打开Database Explorer导航到WroxUnitedmdf→Tables→Fixtures仅选择FixturelD FixtureDate和opponents(使用Ctrl+单击)个字段将它们拖放到页面上VWD将稍微停顿然后创建一个GridView控件并自动打开它的智能任务面板勾选图中所示的Enable Selection复选框注意VWD己经添加了Select按钮列
()从工具箱中将一个DetailsView控件拖放到内容区域的底部选择New的数据源将数据源控件的ID设置为SqlDataSource并继续使用您在本章一直使用的WroxUnited连接字符串指定从Fixtures表中读取数据并选择所有字段
()单击WHERE按钮并选择FixtureID列将操作符设置为等号并从Source下拉列表中选择Control
()在参数属性面板中将ControlID设置为GridView 默认值设置为不要忘记单击Add按钮单击OK Next然后单击Test Query按钮(值正确)最后单击Finish按钮
()将DetailsView控件的宽度扩大一点保存该页面并在浏览器中查看在GridView控件中选择不同的记录并注意DetailsView控件中显示的注释
()现在改善Gallery页面使其从单页显示变为分页显示在Solution Explorer中在根目录下创建GalleryAllaspx页面的一个副本将该副本的名称修改为Galleryaspx
()打开Galleryaspx在页面顶部添加一些换行符然后将一个DropDownList控件拖放到页面顶部将数据源配置为类型Database的新源并命名为SqlDataSource使用WroxUnited数据库从Fixtures表中选择FixturelDFixtureDate和Opponents
单击ORDER BY在FixtureDate列上以升序排列单击OKNext然后测试查询并结束您将回到Choose a Data Source窗口把DataTextField设置为Opponents(暂时这样)同时把DataValueField设置为FixtureID在仍然选中DropDownList控件的情况下从智能任务面板中打开Enable AutoPostBack开关
ASPNET 入门教程完整版
[] [] []