2

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

<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>

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

4

5 回答 5

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--");
    }
}
于 2013-07-17T19:36:45.480 回答
2

使用如下AppendDataBoundItems属性DropDownList

<asp:DropDownList
    ID="searchApplicationDropDown" runat="server"
    AppendDataBoundItems="true"
    DataSourceID="SqlDataSource8"
    DataTextField="AppName" 
    DataValueField="PK_Application">
    <asp:ListItem Text="--Select One--" />
</asp:DropDownList>

<asp:SqlDataSource ID="SqlDataSource8" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" 
    SelectCommand="SELECT [PK_Application], [AppName] FROM [Application]">
</asp:SqlDataSource>
于 2013-07-18T03:15:14.327 回答
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...)使其正确排序。

于 2013-07-17T19:37:47.730 回答
1

使用预渲染

protected void Page_PreRender(object sender, EventArgs e)
{
   searchApplicationDropDown.Items.Insert(0 , new ListItem("Select...", "")); 
}
于 2013-07-18T03:19:44.543 回答
0

尝试这个:

searchApplicationDropDown.Insert(0, new ListItem() { Text = "", Value = "value" });
于 2013-07-17T19:38:53.857 回答