2011-07-08 42 views
21

结合后,添加在下拉列表默认值我绑定我的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"; 

谢谢!

回答

37

数据绑定之后,这样做:

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

或者跟随布莱恩的第二个建议,如果你想这样做的标记。

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

<asp:RequiredFieldValidator .. ControlToValidate="ddlColor" InitialValue="NA" /> 
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> 
+0

你的程序代码,不会让你的 “选择” 项defult或顶部的项目。它将仅仅位于列表的底部,并且列表中的第一项将被选中,除非他另外设置了“SelectedValue”。详情请参阅我的回答。 –

+0

是的,谢谢@Justin。插入方法,而不是做。 –

+0

很酷。如果你只需要一个空的文本和值作为你的默认值,你甚至不需要添加任何列表项。 AppendDataBoundItems =“True”将完成这项工作。谢谢! –

4

可以通过编程或标记添加它,但如果你将其添加程序,而不是Add该项目,您应该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", ""); 

默认项目预计是列表中的第一项。如果你只是Add它,它将在底部,默认情况下不会被选中。

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