2011-07-08 40 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")); 
}