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>

次の使用可能な から値を選択する必要がある 2 番目の 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コントロールに入れる方法です。

DropDownList コントロールの Databinding クエリで使用する[ID]値をDropDownList コントロールから取得するにはどうすればよいですか?ddlSelectorddlChangeTo

4

2 に答える 2

1

これを実現する最も簡単な方法は、更新パネルでセクション全体をラップし、最初のドロップダウンが変更された後に 2 番目のドロップダウンをバインドすることです。

次に、asp:ControlParameter を非表示フィールドに接続し、最初のドロップダウン リストに、2 番目のドロップダウンでデータバインドを呼び出す前に、自動ポストバックのコード ビハインドの非表示フィールドを入力させることができます。

于 2012-10-29T19:12:46.277 に答える
0

OK、これを行う方法を見つけましたが、オンラインで答えがどこにも見つかりませんでした。

コードを少し調べてさまざまな方法を試してみると、DataTextFieldが表示され、DataValueFieldが比較に使用される値であることがわかります。

これは、これを長い間行ってきた人には明らかかもしれませんが、私にはそうではありませんでした.

DataValueFieldコントロールを機能させるために、ddlSelectorDropDownList コントロールに次の変更を加えました。

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

2 番目の Databound DropDownList コントロール、SqlDataSource、およびControlParameterTypeに同様の変更を加える必要がありました。

<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 に答える