Je souhaite ajouter une option "Select One" à une liste déroulante liée à un List<T>
.
Une fois que je demande le List<T>
, comment puis-je ajouter mon Item
initial, ne faisant pas partie de la source de données, comme le PREMIER élément de ce List<T>
? J'ai:
// 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;
Utilisez la méthode Insert :
ti.Insert(0, initialItem);
Mise à jour: une meilleure idée, définissez la propriété "AppendDataBoundItems" sur true, puis déclarez le "Choisir élément" de manière déclarative. L'opération de liaison de données s'ajoute à l'élément déclaré de manière statique.
<asp:DropDownList ID="ddl" runat="server" AppendDataBoundItems="true">
<asp:ListItem Value="0" Text="Please choose..."></asp:ListItem>
</asp:DropDownList>
-Oisin
Utilisez List<T>.Insert
Bien que cela ne concerne pas votre exemple spécifique, si les performances sont importantes, envisagez également d'utiliser LinkedList<T>
car l'insertion d'un élément au début d'un List<T>
nécessite le déplacement de tous les éléments. Voir Quand devrais-je utiliser une liste par rapport à une liste liée .
Utilisez la méthode Insert de List<T>
:
Méthode List.Insert (Int32, T):
Inserts
un élément de la liste auspecified index
.
var names = new List<string> { "John", "Anna", "Monica" };
names.Insert(0, "Micheal"); // Insert to the first element