2012-12-09 81 views
1

我有以下加價:DROPDOWNLIST asp.net工作不正常

<asp:DropDownList ID="ddlTownships" DataTextField="Name" AutoPostBack="True" AppendDataBoundItems="True" DataValueField="Id" runat="server" OnSelectedIndexChanged="ddlTownships_SelectedIndexChanged"> 
         <asp:ListItem Value="0" Text="Please select a township"></asp:ListItem> 
        </asp:DropDownList> 

,這是後面的代碼:

protected void ddlRegions_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      var townshipDAO = (TownshipDAO)FactoryDAO.getInstance().getDAOByType(DAOEnum.Township); 
      ddlTownships.DataSource = townshipDAO.getAllTownshipsByRegionId(Int64.Parse(ddlRegions.SelectedValue)); 
      ddlTownships.DataBind(); 
      liTownships.Visible = true; 
      liSettlements.Visible = false; 
      divPhasesConsole.Visible = false; 
      liNumberOfStands.Visible = false; 
      divFirstDelimiter.Visible = false; 
     } 

基本上每當用戶從ddlRegion選擇一個項目,我得到所有選定區域的鄉鎮,並重新填充下拉列表。然而,ddlTownships記得以前選擇的不同地區的鄉鎮。請注意,我有屬性AppendDataBoundItems =「True」,因爲這是我添加一個列表項「請選擇一個鄉鎮」的唯一方法。我如何離開在標記中定義的列表項目,並防止在ddl重新填充後顯示以前的項目。

謝謝你的時間。

+0

您插入任何時候進入這些'DropDownList'在'Page_Init'或'Page_Load'事件中?爲了使這段代碼起作用,你不應該在'ddlRegions_SelectedIndexChanged'中添加項目,而是在'Page_Init'中檢查一個選定的項目,並根據它重新填充第二個列表。 –

回答

1

您可以在後面的代碼的特定索引處插入新的列表項。所以,你可以刪除AppendDataBoundItems和數據綁定後補充一點:

ddlTownships.Items.Insert(0, new ListItem() { Text = "Please select a township", Value = "0" }); 

另一個有用的東西知道的是,可以綁定之前清除列表:

ddlTownships.Items.Clear(); 
+0

是的我想出了insert()方法在此期間。但是你的回答是正確的。謝謝 – Dragan