操作ASP.NET数据绑定查询

时间:2012-10-29 19:04:52

标签: asp.net tsql

我有一个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] &lt; @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控件的数据绑定查询中使用?

2 个答案:

答案 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控件进行类似的更改,SqlDataSourceControlParameter类型:

<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>

当你自己弄明白的时候,这种冷静的感觉。

我希望其他人可以使用它。