2012-08-27 36 views
1

我有兩個級聯的DropDownList控制(第二個是基於第一個進行的選擇填充):如何從DROPDOWNLIST在回發除去所附項ASP.NET和C#

<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(); 

的用戶第一次選擇從ddlProductddlCategory正確填充的產品。以下時間,ddlCategory中的類別會附加到第一次選擇的類別等。我試圖把ddlProduct.SelectedIndexChanged

ddlCategory.Items.Clear(); 

,但該方法還消除了硬編碼項

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

如何我剛剛從ddlCategory刪除附加的項目嗎?

+0

所以你要保留這個' - Category - 'ddlProduct.SelectedIndexChanged'後的listItem? –

回答

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; 
     } 
    } 
} 
1

後手動DataBind方法調用

1

刪除AppendDataBoundItems="true"和追加空項目刪除類別的項目,你可以使用代碼添加默認類別後...

ddlCategory.Items.Add(new ListItem("- Category -", "0", true));