Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否将行添加到来自数据源的下拉菜单?_C#_Asp.net - Fatal编程技术网

C# 是否将行添加到来自数据源的下拉菜单?

C# 是否将行添加到来自数据源的下拉菜单?,c#,asp.net,C#,Asp.net,我有一个从数据库填充的下拉菜单: <asp:DropDownList ID="searchApplicationDropDown" runat="server" DataSourceID="SqlDataSource8" DataTextField="AppName" DataValueField="PK_Application"></asp:DropDownList> <asp:SqlDataSource ID="Sq

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

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


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

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

标记:

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

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

<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
,但您可以根据需要修改
选择
,以便对其进行排序。您甚至可能需要将
请选择一个应用程序…
修改为类似
(请选择一个应用程序…
)的格式,以便正确排序。

尝试以下操作:

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

使用
DropDownList
AppendDataBoundItems
属性,如下所示:

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

使用预渲染

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

这是默认选中的行,以便您可以确保他们选择了一个值吗?这是默认选中的行,用于显示他们没有从数据库中选择任何内容。否。如果由于sqldatasource中的行数,数组或dropdownlist的所有条目都已满,则此操作将不起作用。您需要直接在ASPX中硬编码,以避免“越界”错误(参见下面的Matthew Schaad的回答)
protected void Page_PreRender(object sender, EventArgs e)
{
   searchApplicationDropDown.Items.Insert(0 , new ListItem("Select...", "")); 
}