2008-12-24 15 views
277

Quiero agregar una opción "Seleccionar uno" a una lista desplegable vinculada a un List<T>.Cómo agregar un elemento al comienzo de la lista <T>?

Una vez que consulta para el List<T>, ¿cómo puedo añadir mi inicial Item, no forma parte de la fuente de datos, como el primer elemento en el que List<T>? Tengo:

// 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; 

Respuesta

511

uso del método Insert:

ti.Insert(0, initialItem); 
+9

¿Hay alguna implicaciones de rendimiento para este Matt? –

+3

@BrianF, Sí, tienes razón. Doc: ['Este método es una operación O (n), donde n es Count'] (https://msdn.microsoft.com/ru-ru/library/sey5k5z4%28v=vs.110%29.aspx? f = 255 & MSPPError = -2147217396) – 23W

+3

@ 23W Probablemente deberías hacer un enlace a la página en inglés si vas a vincular a MSDN. – mbomb007

23

Actualización: una idea mejor, establezca la propiedad "AppendDataBoundItems" true, entonces declarar la "Elegir tema" declarativa. La operación de enlace de datos se agregará al elemento estáticamente declarado.

<asp:DropDownList ID="ddl" runat="server" AppendDataBoundItems="true"> 
    <asp:ListItem Value="0" Text="Please choose..."></asp:ListItem> 
</asp:DropDownList> 

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx

-Oisin

+2

Eso es genial. El OP no especificó ASP.NET pero es un buen truco para saber. –

+2

Ese es el truco ... mucho más fácil que crear un elemento personalizado ... ¡gracias! –

1

Uso Insertar método de List<T>:

List.Insert Método (Int32, T): Inserts un elemento en la lista en el specified index.

Cuestiones relacionadas