1

カスケード接続された2つDropDownListのコントロールがあります(2番目のコントロールは最初のコントロールで行われた選択に基づいて入力されます):

<asp:DropDownList ID="ddlProduct" runat="server" AppendDataBoundItems="true" 
    AutoPostBack="true" onselectedindexchanged="ddlProduct_SelectedIndexChanged">
    <asp:ListItem Value="" Selected="True"> - Product - </asp:ListItem>
</asp:DropDownList>

<asp:DropDownList ID="ddlCategory" runat="server" AutoPostBack="true" 
    OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged" AppendDataBoundItems="true">
    <asp:ListItem Value="" Selected="True"> - Category - </asp:ListItem>
</asp:DropDownList>

ddlProduct.SelectedIndexChangedイベントハンドラーには、次のコードがあります。

ddlCategory.DataSource = _productService.GetCategoryByProductId(ddlProduct.SelectedValue);
ddlCategory.DataTextField = "CategoryName";
ddlCategory.DataValueField = "CategoryId";
ddlCategory.DataBind();

ユーザーが初めて製品を選択したときは、ddlProduct正しくddlCategory入力されています。以下の場合ddlCategory、最初に選択されたカテゴリに、のカテゴリが追加されます。私は入れようとしましたddlProduct.SelectedIndexChanged

ddlCategory.Items.Clear();

ただし、このメソッドはハードコードされたアイテムも削除します

<asp:ListItem Value="" Selected="True"> - Category - </asp:ListItem>

追加されたアイテムをddlCategoryから削除するにはどうすればよいですか?

4

3 に答える 3

2

AppendDataboundItems="false"たとえば、次のDropDownList.DataBound場合に、デフォルトのアイテムを手動で設定して挿入できます。

protected void ddlCategory_DataBound(object sender, EventArgs e)
{
    if (ddlCategory.Items.Count > 0)
    {
            ddlCategory.Items.Insert(0, " - Category - ");
            ddlCategory.Items[0].Value = "";
            ddlCategory.SelectedIndex = 0;
        }
    }
}
于 2012-08-27T10:19:15.423 に答える
1

メソッド呼び出しAppendDataBoundItems="true"後、空のアイテムを手動で削除して追加しますDataBind

于 2012-08-27T10:17:13.737 に答える
1

カテゴリアイテムを削除した後、コードを使用してデフォルトのカテゴリを追加できます...

ddlCategory.Items.Add(new ListItem("- Category -", "0", true));
于 2012-08-27T10:17:18.497 に答える