是否有一些优雅的方法可以向与 LinqDataSource 绑定的 DropDownList 添加一个空选项?
cruster
问问题
5645 次
4 回答
8
以下是在列表顶部添加值的方法。它可以是一个空字符串,也可以是一些文本。
<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。
于 2008-11-10T16:19:21.167 回答
1
标记:
<asp:DropDownList ID="ddlQualQuestion" runat="server" DataSourceID="sdsQualQuestion" DataTextField="ShortQuestionText" DataValueField="QualificationQuestionKey" AutoPostBack="true" OnSelectedIndexChanged="ddlQualQuestion_SelectedIndexChanged" OnDataBound="ddlQualQuestion_DataBound" />;
后面的代码:
protected void ddlQualQuestion_DataBound(object sender, EventArgs e)
{
ddlQualQuestion.Items.Insert(0, new ListItem("", "0"));
}
于 2010-08-13T14:41:20.393 回答
1
采用 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>
另外,如果您不想强制用户进行选择,您可以向 GridView 的 LinqDataSource 添加一个方法:
OnSelecting="myGridview_Selecting"
像这样在后面添加代码:
protected void myGridview_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
if (categories.SelectedValue == "-1")
{
e.WhereParameters.Remove("CategoryID");
}
}
于 2013-01-22T10:14:11.123 回答
0
我会提供一个扩展方法,IEnumerable<string>
将一个项目附加到列表的开头:
public static IEnumerable<string> Prepend(this IEnumerable<string> data, string item)
{
return new string[] { item == null ? string.Empty : item }.Union(data);
}
它是一种 linq-y,因为它使用了 linq 扩展方法 Union。它比这样做更清洁:
var result = new string[]{string.Empty}.Union(from x in data select x.ToString());
于 2008-11-10T16:22:50.160 回答