ddl1は、ddl1の選択値に基づいて正常に入力されます。
私の問題は、ddl2にすでに存在するデータが新しいデータを追加する前にクリアされないため、ddl1が変更されるたびにddl2の内容が増加し続けることです。
<asp:DropDownList ID="ddl1" RunAt="Server" DataSourceID="sql1" DataValueField="ID1" DataTextField="Name2" AppendDataBoundItems="True" AutoPostBack="True">
<asp:ListItem Text="ALL" Selected="True" Value="0"/>
</asp:DropDownList>
<asp:DropDownList ID="ddl2" RunAt="Server" DataSourceID="sql2" DataValueField="ID2" DataTextField="Name2" AppendDataBoundItems="True" AutoPostBack="True">
<asp:ListItem Text="ALL" Selected="True" Value="0"/>
</asp:DropDownList>
<asp:SqlDataSource ID="sql1" RunAt="Server" SelectCommand="sp1" SelectCommandType="StoredProcedure"/>
<asp:SqlDataSource ID="sql2" RunAt="Server" SelectCommand="sp2" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter Type="Int32" Name="ID1" ControlID="ddl1" PropertyName="SelectedValue"/>
</SelectParameters>
</asp:SqlDataSource>
選択したインデックスの変更とitems.clearのコードビハインドでデータバインディングを再試行しましたが、ほとんど成功しませんでした。
Protected Sub ddl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
ddl2.Items.Clear()
ddl2.DataSource = sql2
ddl2.DataBind()
End Sub
[〜#〜] question [〜#〜]
ドロップダウンリストのコンテンツが別のドロップダウンリストの選択された値に依存している場合、新しい値が入力される前にasp:dropdownlistに存在するアイテムをクリアするにはどうすればよいですか?
VBにコードを投稿してください
ddl.Items.Clear()
を使用すると、ドロップダウンリストがクリアされますが、ドロップダウンリストがnotに設定されていることを確認する必要があります。
AppendDataBoundItems="True"
このオプションを使用すると、リバウンドデータが既存のリストに追加され、バインド前に[〜#〜] not [〜#〜]がクリアされます。
[〜#〜] solution [〜#〜]
追加 - AppendDataBoundItems="False"
ドロップダウンリストに。
データがリバウンドされると、既存のすべてのデータが事前に自動的にクリアされます。
Protected Sub ddl1_SelectedIndexChanged(sender As Object, e As EventArgs)
ddl2.DataSource = sql2
ddl2.DataBind()
End Sub
注:appenddatboundアイテムはリストの変更ごとにドロップダウンが独自のデータを追加する可能性があるため、これはすべての状況に適しているわけではありません。
トップヒント
デフォルトのリスト項目をドロップダウンに追加したいが、データを再バインドする必要がありますか?
使用する AppendDataBoundItems="False"
ポストバック時の重複データを防止し、ドロップダウンリストをバインドした直後に新しいデフォルトリストアイテムを挿入します。
ddl.Items.Insert(0, New ListItem("Select ...", ""))
バインドする前に、listbboxをクリアする必要があります。
Me.ddl2.Items.Clear()
' now set datasource and bind
以下を使用してください
ddlCity.Items.Clear();
問題を解決するための2つの簡単な手順
最初にAppendDataBoundItemsプロパティをチェックし、falseを割り当てます
次に、プロパティ.clear()を使用してすべてのアイテムをクリアします
{
ddl1.Items.Clear();
ddl1.datasource = sql1;
ddl1.DataBind();
}
コードをコンパイルしただけで、欠けているのは、次のように再度バインドする前に、ddl2を空のデータソースにバインドする必要があることだけです。
Protected Sub ddl1_SelectedIndexChanged(ByVal sender As Object、ByVal e As EventArgs)//ddl2.Items.Clear()
ddl2.DataSource=New List(Of String)() ddl2.DataSource = sql2 ddl2.DataBind() End Sub
そしてそれはうまくいきました