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...", ""));
}