与数据库绑定后,在下拉列表中添加默认值

时间:2011-07-08 13:46:51

标签: c# asp.net

我将ddl绑定到我的数据库,如下所示,但如何在绑定值之上添加默认文本,使其显示为:

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

代码:

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

谢谢!

5 个答案:

答案 0 :(得分:42)

数据绑定后,请执行以下操作:

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

如果您想在标记中执行此操作,请遵循Brian的第二个建议。

您应该添加一个RequiredFieldValidator控件并将其InitialValue设置为“NA”。

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

答案 1 :(得分:13)

您可以通过编程方式执行此操作:

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"));

或者将其添加到标记中:

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

答案 2 :(得分:4)

您可以通过编程方式或在标记中添加,但如果以编程方式添加,而不是Add项目,则应将Insert作为位置零,以便它是第一项:< / p>

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", "");

默认项目应该是列表中的第一项。如果您只是Add它,它将位于底部,默认情况下不会被选中。

答案 3 :(得分:2)

设计

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

代码隐藏

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

答案 4 :(得分:0)

贾斯汀提供的解决方案应该有效。确保使用SelectedIndex属性也会有所帮助。

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;