2011-07-08 4 views
21

I binded mi ddl a mi base de datos como abajo, pero ¿cómo puedo añadir un texto predeterminado en la parte superior de los valores encuadernados de modo que aparezca como:Adición de un valor predeterminado en lista desplegable después de la unión con la base de datos

Select Color ---> default text 
Red ---> database value 
Blue ---> database value 
Green ---> database value 

Código:

DropDownList ddlSize = (DropDownList)FormView_Product.Row.Cells[0].FindControl("ddlSize"); 
    CommerceEntities db = new CommerceEntities(); 

    ddlColor.DataSource = from p in db.ProductTypes 
             where p.ProductID == pID 
             orderby p.Color 
             select new { p.Color }; 
    ddlColor.DataTextField = "Color"; 

¡Gracias!

Respuesta

37

Después de enlace de datos, haga lo siguiente:

ddlColor.Items.Insert(0, new ListItem("Select","NA")); //updated code 

O siga segunda sugerencia de Brian si quiere hacerlo en el marcado.

Probablemente debería agregar un control RequiredFieldValidator y establecer su ValorInicial en "NA".

<asp:RequiredFieldValidator .. ControlToValidate="ddlColor" InitialValue="NA" /> 
13

Puede hacerlo mediante programación:

ddlColor.DataSource = from p in db.ProductTypes 
            where p.ProductID == pID 
            orderby p.Color 
            select new { p.Color }; 
ddlColor.DataTextField = "Color"; 
ddlColor.DataBind(); 
ddlColor.Items.Insert(0, new ListItem("Select", "NA")); 

o añadirlo en el marcado como:

<asp:DropDownList .. AppendDataBoundItems="true"> 
    <Items> 
     <asp:ListItem Text="Select" Value="" /> 
    </Items> 
</asp:DropDownList> 
+0

Su código de programación no hará que su punto "Seleccionar" de la parte superior o defult artículo. Simplemente estará en la parte inferior de la lista y se seleccionará el primer elemento de la lista, a menos que establezca el 'SelectedValue'. Ver mi respuesta para más detalles. –

+0

Sí, gracias @Justin. Insertar método en cambio lo haría. –

+0

Cool. Si solo necesita un texto y un valor vacíos como valor predeterminado, ni siquiera necesita agregar ningún elemento de la lista. AppendDataBoundItems = "True" hará el trabajo. ¡Gracias! –

4

Puede agregar mediante programación o en el marcado, pero si se agrega mediante programación, en lugar de Add el artículo, usted debe Insert como posición cero para que sea el primer elemento:

ddlColor.DataSource = from p in db.ProductTypes 
         where p.ProductID == pID 
         orderby p.Color 
         select new { p.Color }; 
ddlColor.DataTextField = "Color"; 
ddlColor.DataBind(); 
ddlColor.Items.Insert(0, new ListItem("Select Color", ""); 

Se espera que el artículo predeterminado sea el primer elemento en la lista. Si solo lo tiene Add, estará en la parte inferior y no se seleccionará de manera predeterminada.

0

La solución proporcionada por Justin debería funcionar. Para estar seguro, hacer uso de la propiedad SelectedIndex también ayudará.

ddlColor.DataSource = from p in db.ProductTypes 
         where p.ProductID == pID 
         orderby p.Color 
         select new { p.Color }; 

ddlColor.DataTextField = "Color"; 
ddlColor.DataBind(); 

ddlColor.Items.Insert(0, new ListItem("Select Color", ""); 
ddlColor.SelectedIndex = 0; 
2

diseño

<asp:DropDownList ID="ddlArea" DataSourceID="ldsArea" runat="server" ondatabound="ddlArea_DataBound" /> 

CodeBehind

protected void ddlArea_DataBound(object sender, EventArgs e) 
{ 
    ddlArea.Items.Insert(0, new ListItem("--Select--", "0")); 
} 
Cuestiones relacionadas