我有一個Linq從DB中給出的項目列表。 現在我用這個列表填充一個ComboBox。如何在由linq填充的組合框中插入空行?
我怎麼能得到它的空行?
我的問題是,在列表中的值不允許爲空,所以我不能輕鬆添加一個新的空項目。
我有一個Linq從DB中給出的項目列表。 現在我用這個列表填充一個ComboBox。如何在由linq填充的組合框中插入空行?
我怎麼能得到它的空行?
我的問題是,在列表中的值不允許爲空,所以我不能輕鬆添加一個新的空項目。
你可以嘗試這樣做:
Dropdown.Items.Insert(0, String.Empty)
我已經成功的另一位爲創建一個空的項目,並在我的數據源的開頭插入它之前,我綁定到下拉列表。
您可以使用Concat()將靜態項目後的真實數據附加到該項目中。你需要做的空項目,序列,你可以用Enumerable.Repeat()做的事:
list.DataSource = Enumerable.Repeat(new Entity(), 1)
.Concat(GetEntitiesFromDB());
或者通過定義一個簡單的擴展方法(在集合論單身是一組與基數1 ):
public IEnumerable<T> AsSingleton<T>(this T @this)
{
yield return @this;
}
// ...
list.DataSource = new Entity().AsSingleton().Concat(GetEntitiesFromDB());
甚至更好,寫一個前置方法:
public IEnumerable<T> Prepend<T>(this IEnumerable<T> source, params T[] args)
{
return args.Concat(source);
}
// ...
list.DataSource = GetEntitiesFromDB().Prepend(new Entity());
ASPX頁面
<asp:DropDownList ID="DDL" runat="server" AppendDataBoundItems="True">
<asp:ListItem Selected="True" Value="0" Text=""></asp:ListItem>
</asp:DropDownList>
C#頁
Dropdown.Items.Insert(0, "");
始終設置AppendDataBoundItems="True"
因爲AppendDataBoundItems
屬性允許數據綁定發生前項添加到列表控件對象。數據綁定後,項目集合包含數據源中的項目和以前添加的項目。
需要設置AppendDataBoundItems =「True」。檢查@Rajapandiyan JJ回答 – 2014-04-01 06:33:57
只有當您在數據綁定之前插入項目。您可以在數據綁定後面插入項目,而無需將AppendDataBoundItems設置爲True。 – 2014-04-01 14:05:52
不,它不起作用。但是,在數據綁定後將數據插入到Listitemcollections中的第0個位置將替換第0個位置處的現有數據。 – 2014-04-01 14:45:15