私はビデオカードとマザーボードのデータベースを持っている簡単なことをテストしています。最初のドロップダウンリストはユニークなブランドのみを引き出しますASP.NET C#2つのドロップダウンリストでポストバックがお互いのインデックスを混乱させ続ける
<asp:DropDownList ID="ddlfirst" runat="server" DataSourceID="SqlDataSource1" DataTextField="Brand" DataValueField="Brand" OnSelectedIndexChanged="ddlfirst_SelectedIndexChanged" AutoPostBack="True">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:HardwareConnectionString %>" SelectCommand="SELECT DISTINCT [Brand] FROM [Computer_Motherboards]"></asp:SqlDataSource>
2番目のドロップダウンリストには最初のドロップダウンリストが表示されます。モデルは表示フィールドで、電力要件は値です。
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:HardwareConnectionString %>" SelectCommand="SELECT DISTINCT [Brand], [Model], [PowerDraw] FROM [Computer_Motherboards] where Brand = @SessionVar">
<SelectParameters>
<asp:SessionParameter Name="SessionVar" SessionField="Mobo_Brand_Selection" ConvertEmptyStringToNull="true" />
</SelectParameters>
</asp:SqlDataSource>
最初のDDLのインデックスが変更されたときにセッション変数が設定されている:
protected void ddlfirst_SelectedIndexChanged(object sender, EventArgs e)
{
//sets this session variable to whatever the selected brand is
Session["Mobo_Brand_Selection"] = ddlfirst.SelectedValue;
}
の問題は、上記と同じ操作を行うとき、私のマザーボードの情報のインデックスを除き、任意の種類のクリックイベントまたはポストバックに対してモデル/消費電力要件が変更されます。 EVGAとモデル5を選択してからマザーボードのddlsに移動し、ASUSとモデル4を選択すると、EVGAモデル5の選択はインデックス1などになります。私は様々なif(!postback)ステートメントで遊んでみましたが、私はそれを理解できません。
は、あなたがポストバック後に予想されるものを第一または第二のではないでしょうか?あなたの問題をよりよく説明してください。 – Seano666
[例イメージ](http://i.imgur.com/wjMCQAQ.jpg) 私が意味することとどのドロップダウンリストが影響を受けるかのスクリーンショットを撮りました。 – Aeternus
あなたの問題があります。ページのページロードイベントにドロップダウンリストを設定していますか? –