0

我有一个 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 控件,需要从下一个 available 中选择谁的值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] &lt; @Description)">
  <SelectParameters>
    <asp:ControlParameter ControlID="ddlSelector" Name="Description" PropertyName="SelectedValue" Type="String" />
  </SelectParameters>
</asp:SqlDataSource>

上面的WHERE条款不适合我所追求的解决方案。它按字母顺序过滤。

我需要的是一种从中获取[ID]价值ddlSelector并将所有大于该值的值ID置于我ddlChangeTo控制中的方法。

如何[ID]从 DropDownList 控件获取值以在ddlSelectorDropDownList 控件的数据绑定查询中使用ddlChangeTo

4

2 回答 2

1

完成此操作的最简单方法是将整个部分包装在更新面板中,并在第一个下拉列表更改后绑定第二个下拉列表。

然后,您可以将 asp:ControlParameter 连接到隐藏字段,并让第一个下拉列表在自动回发后面的代码中填充隐藏字段,然后在第二个下拉列表中调用数据绑定。

于 2012-10-29T19:12:46.277 回答
0

好的,我发现了如何做到这一点,但我没有在任何地方在线找到答案。

在盯着代码看了一会儿并尝试了各种方法之后,看起来这DataTextField就是显示的内容,而DataValueField这是用于比较的值。

对于那些已经这样做了很长时间的人来说,这可能是显而易见的,但它不适合我。

DataValueField为了使我的控件正常工作,我对ddlSelectorDropDownList 控件进行了以下更改:

<asp:DropDownList ID="ddlSelector" runat="server" DataSourceID="dataSelector"
  DataTextField="Description" DataValueField="ID"
  OnSelectedIndexChanged="TextBox_TextChanged"
  AutoPostBack="True">
</asp:DropDownList>

我必须对第二个 Databound DropDownList 控件、SqlDataSourceControlParameterType 进行类似的更改:

<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] &gt; @ID)">
  <SelectParameters>
    <asp:ControlParameter ControlID="ddlSelector" Name="Description" PropertyName="SelectedValue" Type="Int32" />
  </SelectParameters>
</asp:SqlDataSource>

当你自己弄清楚时,这种感觉很酷。

我希望其他人能从中得到一些用处。

于 2012-10-29T21:26:14.677 回答