DropDownList AppendDataBoundItems(第の項目を空白にな重複)
-
06-09-2019 - |
質問
してい DropDownList
内 UpdatePanel
これに可から SqlDataSource
.このパラメーターならでは。りのあるところに必要な複数の供され、そこで起こることは、各時間のパネルの更新更新項目追加され DropDownList
.その DropDownList
終わると、データが正しくない場合、または繰り返します。
を持ってい AppendDataBoundItems
プロパティを設定す true
で-さんありがとうございます。初の項目を空白にします。
たいのですがこの問題なのか。しおりを付けることができてい空の第一商品?
(この DropDownList
ですがASP.NET web2.0アプリcodebehindはクライアントまで、フルのC#)
解決
の代わりにAppendDataboundItems='true'
(あなたが話している問題が発生します)を使用しての、DataBound
ためDropDownList
イベントに応答して、リストの一番上にあなたの「空白」の項目を追加します。
<asp:DropDownList runat="server" ID="MyList"
ondatabound="MyListDataBound"></asp:DropDownList>
そして、背後にあるコードでます:
protected void MyListDataBound(object sender, EventArgs e)
{
MyList.Items.Insert(0, new ListItem("- Select -", ""));
}
他のヒント
について答えることができるので感じることが必要となどにより情報がありますの複数のオプションを作る必要があります。
まず、こ AppendDataBoundItems
.の場合 AppendDataBoundItems = "true"
, ListItems
追加され DropDownList
な清算出すのです。そうしないと、 DropDownList
クリアして、次の DataBind
. MSDN AppendDataBoundItems doc
基本的には2つのオプション対象の応答:
1.を定義する空のオプションをhtmlに追加しListItemsデータベースからのDropDownListだけます。
通知3のものはこちら
- 空白
ListItem
に定義されてhtml AppendDataBoundItems="true"
DataBind
呼び出されることはありませんに供される場合、又はDropDownList
項目 カウントは>1
ソース:
<asp:DropDownList ID="MyList" runat="server" AppendDataBoundItems="true" DataValueField="Id" DataTextField="Name" >
<asp:ListItem Text="- Select One -" Value="" />
</asp:DropDownList>
コード:
protected void Page_Load(object sender, System.EventArgs e)
{
if (MyList.Items.Count <= 1 ) {
MyList.DataSource = MyDataSource;
MyList.DataBind();
}
}
注意:私の論理確認をカウントvsチェック IsPostBack
.が供されている多くの重複databindingできる事になるすることはいたしません。チェック項目をカウントは基本的にだけチェックがすでに出して読み込まれます。
(オプションの利用 IsPostBack
代わりに)
protected void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack) {
MyList.DataSource = MyDataSource;
MyList.DataBind();
}
}
2.リブDropDownList各ページのリフレッシュ。
通知3差からの最初のオプション:
AppendDataBoundItems="false"
うことができなくなった定義されていないしfalse
がで デフォルト値)- 空白
ListItem
では、追加コードを作ります。できませんで指定することができまhtml がついているのでAppendDataBoundItems="false"
, でクリアされます。 DataBind
呼び出したときに、毎Page_Load
ソース:
<asp:DropDownList ID="MyList" runat="server" DataValueField="Id" DataTextField="Name"
OnDataBound="MyList_DataBound" >
</asp:DropDownList>
コード:
protected void Page_Load(object sender, System.EventArgs e)
{
MyList.DataSource = MyDataSource;
MyList.DataBind();
}
protected void MyList_DataBound(object sender, EventArgs e)
{
MyList.Items.Insert(0, new ListItem("- Select One -", ""));
}
あなたはおそらく背後にあるコードでそのDropDownListコントロールをバインドします。だから、あなたは再びポストバック後にそれを行うべきではありません。
// probably in Page_Load method
if (!Page.IsPostBack)
{
// do data binding here
};
ここでアイデアがある、我々は2つのイベントを使用することができます。のデータバインドとデータバインディングの
protected void MyListDataBound(object sender, EventArgs e)
{
MyList.Items.Insert(0, new ListItem("- Select -", ""));
}
protected void MyListDataBinding(object sender, EventArgs e)
{
MyList.Items.Items.Clear();
}
<asp:DropDownList ID="DropDownList1" AppendDataBoundItems="true" runat="server"
DataSourceID="SqlDataSource1" DataTextField="state" DataValueField="state">
<asp:ListItem Text="(Select a State)" Value="" />
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:pubsConnectionString %>"
SelectCommand="SELECT DISTINCT [state] FROM [authors]">
</asp:SqlDataSource>
ここでの考え方です。
AutoPostBack
trueに設定すると、あなたの背後にあるコードでif(!Page.IsPostBack)
内のすべての結合方法を置くと呼ばれるドロップダウンリスト内のプロパティがあります。それは私のために働いています。
よろしくます。
ただ、ドロップダウンタグ
にのの EnableViewState = "false" に追加します。<asp:DropDownList runat="server" ID="DropDownList1" DataSourceID="SqlDataSource"
DataTextField="Name" DataValueField="ID" EnableViewState="false"
AppendDataBoundItems="true">
<asp:ListItem Value="">Select</asp:ListItem>
</asp:DropDownList>