简体   繁体   English

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

[英]Adding a default value in dropdownlist after binding with database

I binded my ddl to my database as below, but how can I add a default text on top of the binded values so that it appears as:我将我的 ddl 绑定到我的数据库,如下所示,但是如何在绑定值之上添加默认文本,使其显示为:

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

Code:代码:

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

Thanks!谢谢!

After data-binding, do this:数据绑定后,执行以下操作:

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

Or follow Brian's second suggestion if you want to do it in markup.或者如果您想在标记中执行此操作,请遵循 Brian 的第二个建议。

You should probably add a RequiredFieldValidator control and set its InitialValue to "NA".您可能应该添加一个RequiredFieldValidator 控件并将其InitialValue 设置为“NA”。

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

You can do it programmatically:您可以以编程方式执行此操作:

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

Or add it in markup as:或将其添加到标记中:

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

You can add it programmatically or in the markup, but if you add it programmatically, rather than Add the item, you should Insert it as position zero so that it is the first item:您可以以编程方式或在标记中添加它,但如果您以编程方式添加它,而不是Add项目,您应该将其作为 position 零Insert ,以便它是第一项:

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

The default item is expected to be the first item in the list.默认项应为列表中的第一项。 If you just Add it, it will be on the bottom and will not be selected by default.如果你只是Add它,它会在底部,默认不会被选中。

design设计

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

The solution provided by Justin should work.贾斯汀提供的解决方案应该有效。 To be sure making use of SelectedIndex property will also help.确保使用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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM