Dropdownlist asp.net无法正常工作

时间:2012-12-09 17:15:32

标签: c# asp.net drop-down-menu webforms

我有以下标记:

<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中选择一个项目时,我会选择所有已选择regionId的乡镇并重新填充下拉列表。然而,ddlTownships记得以前选择的不同地区的乡镇。请注意,我有属性AppendDataBoundItems =“True”,因为这是我添加列表项“唯一选择一个乡镇”的唯一方法。如何在标记中保留listitem并防止在重新填充ddl之后显示先前的项目。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

您可以在后面的代码中的特定索引处插入新的列表项。所以你可以删除AppendDataBoundItems并在数据绑定后添加它:

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

另一个有用的事情是,可以在数据绑定之前清除列表:

ddlTownships.Items.Clear();