2013-07-17 48 views
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> 

如何在顶部手动添加排在数据库之外?

+0

难道这就是**默认选中的行**使你可以确定他们选择了一个值? –

+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--"); 
    } 
} 
+0

不可以。如果由于sqldatasource的行数而导致数组或下拉列表中的所有条目已满,则这将不起作用。您需要直接在ASPX中对其进行硬编码以避免出现“越界”错误(请参阅下面的Matthew Schaad的回复) – Fandango68

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...)以使其正确排序。

0

试试这个:

searchApplicationDropDown.Insert(0, new ListItem() { Text = "", Value = "value" }); 
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> 
1

使用的PreRender

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