Asp.net 带有LinqDataSource和空选项的DropDownList
是否有一些优雅的方法可以将空选项添加到与LinqDataSource绑定的DropDownList中?下面介绍如何在列表顶部添加值。它可以是空字符串,也可以是一些文本Asp.net 带有LinqDataSource和空选项的DropDownList,asp.net,linq,drop-down-menu,Asp.net,Linq,Drop Down Menu,是否有一些优雅的方法可以将空选项添加到与LinqDataSource绑定的DropDownList中?下面介绍如何在列表顶部添加值。它可以是空字符串,也可以是一些文本 <asp:DropDownList ID="categories" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="categoriesDataSource" DataTextField="CategoryName" D
<asp:DropDownList ID="categories" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="categoriesDataSource" DataTextField="CategoryName" DataValueField="CategoryID" EnableViewState="False">
<asp:ListItem Value="-1">
-- Choose a Category --
</asp:ListItem>
</asp:DropDownList>
--选择一个类别--
确保将DropDownList的AppendDataBoundItems设置为True 我会在
IEnumerable
上提供一个扩展方法,在列表开头添加一个项目:
public static IEnumerable<string> Prepend(this IEnumerable<string> data, string item)
{
return new string[] { item == null ? string.Empty : item }.Union(data);
}
标记:
<asp:DropDownList ID="ddlQualQuestion" runat="server" DataSourceID="sdsQualQuestion" DataTextField="ShortQuestionText" DataValueField="QualificationQuestionKey" AutoPostBack="true" OnSelectedIndexChanged="ddlQualQuestion_SelectedIndexChanged" OnDataBound="ddlQualQuestion_DataBound" />;
以DOK提供的解决方案为例:
<asp:DropDownList ID="categories" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="categoriesDataSource" DataTextField="CategoryName" DataValueField="CategoryID" EnableViewState="False">
<asp:ListItem Value="-1">
-- Choose a Category --
</asp:ListItem>
</asp:DropDownList>
添加代码,如下所示:
protected void myGridview_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
if (categories.SelectedValue == "-1")
{
e.WhereParameters.Remove("CategoryID");
}
}
为清晰起见,为什么不将该建议添加到示例代码中?谢谢您的建议,Keltex。我认为我的原始版本强调了必须更改属性这一点,但显然没有。事实证明,只要将AppendDataBoundItems设置为true,就会在开头添加一个空选项。比如说它是默认存在的还是什么。如果我添加一个asp:ListItem,我将得到两个空选项。无论如何,你的解决方案很酷,谢谢。
<asp:DropDownList ID="categories" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="categoriesDataSource" DataTextField="CategoryName" DataValueField="CategoryID" EnableViewState="False">
<asp:ListItem Value="-1">
-- Choose a Category --
</asp:ListItem>
</asp:DropDownList>
OnSelecting="myGridview_Selecting"
protected void myGridview_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
if (categories.SelectedValue == "-1")
{
e.WhereParameters.Remove("CategoryID");
}
}