()在DropDownList中一个对手可能会出现多次而使得用户不知道选择哪场比赛我们最后的任务就是通过一个小技巧解决这个问题按如下代码所示修改DropDownList控件的DataTextField属性和该控件的数据源控件(SqIDataSource)的SelectCommand:
<asp:DropDownList ID=DropDownList runat=server
DataSourceID=SqlDataSource
DataTextField=FixtureCombo
DataValueField=FixtureID
AutoPostBack=true>
</asp:DropDownList>
<asp:SqlDataSource ID=SqlDataSource runat=server
ConnectionString=<%$ ConnectionStrings:WroxUnited%>
SelectCommand=SELECT [FixtureID](Opponents + +CONVERT(varcharFixtureDate )) As FixtureCombo FROM [Fixtures] ORDER BY [Fixturedate]>
操作回顾
这两个页面都是对前面练习的逻辑扩展与前面一样修改SelectCommand(使用VWD的Configure Data Source向导)从而在WHERE子句中获得参数的值在前一个试一试练习中参数存放在查询字符串中但在这两个页面中参数来源于另一个控件
在第一种情况中GridView控件用选中的Select按钮所在记录的ID填充参数该值将由数据源控件用于其WHERE子句中一个重要的(通常容易被忽略的步骤)是将DropDownList控件的AutoPostBack属性设置为True
在最后一步中您希望在DropDownList控件内显示多个字段可以通过在SQL语句中将已存在的字段连接起来创建一个新的字段实现这个目的下面的代码将对手的名称空格符连字符和转换过的比赛日期连接起来创建了一个名为FixtureCombo的字段
SelectCommand=SELECT [FixtureID](Opponents + +CONVERT(varcharFixtureDate )) As FixtureCombo FROM [Fixtures] ORDER BY [Fixturedate]>
注意加号(+)用于连接字符串的不同部分字段pponent的值可以直接从数据库中取用FixtureDate的值也可以从数据库中获取但它的格式是日期不是您所需要的格式所以将它转换为一种称为varchar的类型这是一种字符串然后使用由一个空格一个连字符和另一个空格组成的分隔部分将两个字符串连接起来
ASPNET 入门教程完整版
[] [] []