Я хочу добавить опцию «Выбрать один» в раскрывающийся список, привязанный к List<T>.
Как только я запрашиваю List<T>, как мне добавить мой исходный Item, не являющийся частью источника данных, в качестве ПЕРВОГО элемента в этом List<T>? У меня есть:
// populate ti from data
List<MyTypeItem> ti = MyTypeItem.GetTypeItems();
//create initial entry
MyTypeItem initialItem = new MyTypeItem();
initialItem.TypeItem = "Select One";
initialItem.TypeItemID = 0;
ti.Add(initialItem) <!-- want this at the TOP!
// then
DropDownList1.DataSource = ti;





Обновление: лучшая идея, установите для свойства «AppendDataBoundItems» значение true, затем декларативно объявите «Выбрать элемент». Операция привязки данных добавится к статически объявленному элементу.
<asp:DropDownList ID = "ddl" runat = "server" AppendDataBoundItems = "true">
<asp:ListItem Value = "0" Text = "Please choose..."></asp:ListItem>
</asp:DropDownList>
-Oisin
Используйте метод Вставлять:
ti.Insert(0, initialItem);
@ 23W Вам, вероятно, следует сделать ссылку на английскую страницу, если вы собираетесь ссылаться на MSDN.
Можно ли вставить в конец списка?
@GaryHenshall да, используйте метод Add, он вставляет в конце.
Начиная с .NET 4.7.1, вы можете использовать Append() и Prepend(). Отметьте этот ответ
У меня не работает - не могу неявно преобразовать тип void в System.Collections.Generic.List <initialItem>
Используйте метод ВставлятьList<T>:
List.Insert Method (Int32, T):
Insertsan element into the List at thespecified index.
var names = new List<string> { "John", "Anna", "Monica" };
names.Insert(0, "Micheal"); // Insert to the first element
Используйте List<T>.Insert
Хотя это не относится к вашему конкретному примеру, если производительность важна, также рассмотрите возможность использования LinkedList<T>, потому что вставка элемента в начало List<T> требует, чтобы все элементы были перемещены. См. Когда мне следует использовать список или LinkedList.
Начиная с .NET 4.7.1, вы можете использовать Prepend() и Append() без побочных эффектов. Результатом будет IEnumerable.
// Creating an array of numbers
var ti = new List<int> { 1, 2, 3 };
// Prepend and Append any value of the same type
var results = ti.Prepend(0).Append(4);
// output is 0, 1, 2, 3, 4
Console.WriteLine(string.Join(", ", results ));
Это круто. В OP не указан ASP.NET, но это хороший трюк.