添加行来自数据源的下拉菜单?

时间:2013-07-17 19:29:44

标签: c# asp.net

我有一个从数据库中填充的下拉菜单:

<asp:DropDownList ID="searchApplicationDropDown" runat="server" 
        DataSourceID="SqlDataSource8" DataTextField="AppName" 
        DataValueField="PK_Application"></asp:DropDownList>

    <asp:SqlDataSource ID="SqlDataSource8" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" 
        SelectCommand="SELECT [PK_Application], [AppName] FROM [Application]">
    </asp:SqlDataSource>

如何在数据库外部手动添加行?

5 个答案:

答案 0 :(得分:2)

您需要处理下拉列表的DataBound事件(在数据库中的所有值都已放入下拉列表后发生),如下所示:

标记:

<asp:DropDownList ID="searchApplicationDropDown" runat="server" 
    DataSourceID="SqlDataSource8" DataTextField="AppName" 
    DataValueField="PK_Application" OnDataBound="searchApplicationDropDown_DataBound"></asp:DropDownList>

代码隐藏:

protected void searchApplicationDropDown_DataBound(object sender, EventArgs e)
{
    DropDownList list = sender as DropDownList;

    if (list != null)
    {
        list.Items.Insert(0, "--Select One--");
    }
}

答案 1 :(得分:2)

使用AppendDataBoundItems的{​​{1}}属性,如下所示:

DropDownList

答案 2 :(得分:1)

因为您只是想在顶部获取默认行。一种方法是:

<asp:SqlDataSource ID="SqlDataSource8" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" 
    SelectCommand="SELECT -1 AS [PK_Application], 'Please select an application...' AS [AppName] UNION ALL SELECT [PK_Application], [AppName] FROM [Application]">
</asp:SqlDataSource>

我不确定[PK_Application]int,但您可以根据需要修改SELECT以对其进行排序。您甚至可能需要将Please select an application...修改为(Please select an application...)以使其正确排序。

答案 3 :(得分:1)

使用PreRender

protected void Page_PreRender(object sender, EventArgs e)
{
   searchApplicationDropDown.Items.Insert(0 , new ListItem("Select...", "")); 
}

答案 4 :(得分:0)

试试这个:

searchApplicationDropDown.Insert(0, new ListItem() { Text = "", Value = "value" });