将SQL数据重新绑定到下拉列表,但保留来自aspx页面的硬编码选项

时间:2012-10-19 19:55:27

标签: asp.net webforms .net-4.5

我的aspx页面中有一个带有3个硬编码选项的DropDownList,它还包含来自后面代码的SQL服务器数据(AppendDataBoundItems =“true”)。我想要做的是始终保留这3个硬编码选项,但是当部分或完整页面重新加载时,从数据库中提取的任何新SQL数据都将覆盖现有的SQL数据绑定信息,但保留3个硬编码选项。

ASPX页码:

<asp:DropDownList ID="ddlParentLocation" runat="server">
        <asp:ListItem Value="" Text="Select Parent Location" />
        <asp:ListItem Value="" Text="None" />
        <asp:ListItem Value="" Text="Unknown" />
    </asp:DropDownList>

代码隐藏:

protected void ddlMediaList_SelectedIndexChanged(object sender, EventArgs e)
{
    //Load existing locations for SelectedID
    ddlParentLocation.DataSource = SQLHelper.GetDataByQuery("SELECT LocationID, LocationName FROM dbo.vwLocations WHERE SectionID = '" + ddlMediaList.SelectedValue.ToString() + "'");
    ddlParentLocation.DataValueField = "LocationID";
    ddlParentLocation.DataTextField = "LocationName";
    ddlParentLocation.DataBind();
}

1 个答案:

答案 0 :(得分:0)

您需要做的就是在进行绑定之前记住这些列表项。你可以这样做:

            List<ListItem> itemList = new List<ListItem>(ddl1.Items.Count);
            foreach (ListItem item in ddl1.Items)
            {
                itemList.Add(item);
            }

然后在绑定之后你可以像这样添加它们:

            foreach (ListItem item in itemList)
            {
                ddl1.Items.Add(item);
            }

如果您希望它们位于列表顶部,则可以使用“插入”而不是“添加”。