我有一个Databound DropDownList控件,它填充了以下查询:
<asp:DropDownList ID="ddlSelector" runat="server" DataSourceID="dataSelector"
DataTextField="Description" DataValueField="Description"
OnSelectedIndexChanged="TextBox_TextChanged"
AutoPostBack="True">
</asp:DropDownList>
<asp:SqlDataSource ID="dataSelector" runat="server"
ConnectionString="<%$ ConnectionStrings:PRODUCTION %>"
SelectCommand="SELECT [ID], [Description] FROM [Status]">
</asp:SqlDataSource>
我有第二个Databound DropDownList控件,需要从下一个Status.ID
中选择值。
<asp:DropDownList ID="ddlChangeTo" runat="server" DataSourceID="dataChangeTo"
DataTextField="Description" DataValueField="Description">
</asp:DropDownList>
<asp:SqlDataSource ID="dataChangeTo" runat="server"
ConnectionString="<%$ ConnectionStrings:PRODUCTION %>"
SelectCommand="SELECT [ID], [Description] FROM [Status] WHERE ([Description] < @Description)">
<SelectParameters>
<asp:ControlParameter ControlID="ddlSelector" Name="Description" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
上面的WHERE
条款不符合我的解决方案。它按字母顺序过滤。
我需要的是从[ID]
获取ddlSelector
值并将所有值大于ID
的值放入ddlChangeTo
控件的方法。
如何从[ID]
DropDownList控件中获取ddlSelector
值以在ddlChangeTo
DropDownList控件的数据绑定查询中使用?
答案 0 :(得分:1)
实现此目的的最简单方法是将整个部分包装在更新面板中,并在第一个部分更改后绑定第二个下拉列表。
然后你可以将asp:ControlParameter连接到一个隐藏字段,让第一个下拉列表填充autopostback后面代码中的隐藏字段,然后在第二个下拉列表中调用数据绑定。
答案 1 :(得分:0)
好的,我发现了如何做到这一点,但我没有在网上找到答案。
在对代码进行主演并尝试各种方式之后,DataTextField
显示的内容显示的是DataValueField
是用于比较的值。
对于那些已经做了很长时间的人来说,这可能是显而易见的,但这不适合我。
为了让我的控件正常工作,我对DataValueField
DropDownList控件的ddlSelector
进行了以下更改:
<asp:DropDownList ID="ddlSelector" runat="server" DataSourceID="dataSelector"
DataTextField="Description" DataValueField="ID"
OnSelectedIndexChanged="TextBox_TextChanged"
AutoPostBack="True">
</asp:DropDownList>
我必须对第二个Databound DropDownList控件进行类似的更改,SqlDataSource
和ControlParameter
类型:
<asp:DropDownList ID="ddlChangeTo" runat="server" DataSourceID="dataChangeTo"
DataTextField="Description" DataValueField="ID">
</asp:DropDownList>
<asp:SqlDataSource ID="dataChangeTo" runat="server"
ConnectionString="<%$ ConnectionStrings:PRODUCTION %>"
SelectCommand="SELECT [ID], [Description] FROM [Status] WHERE ([ID] > @ID)">
<SelectParameters>
<asp:ControlParameter ControlID="ddlSelector" Name="Description" PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
当你自己弄明白的时候,这种冷静的感觉。
我希望其他人可以使用它。