2011-07-08 25 views
21

tôi binded DDL của tôi để cơ sở dữ liệu của tôi như dưới đây, nhưng làm thế nào tôi có thể thêm một văn bản mặc định trên đầu trang của các giá trị binded để nó xuất hiện như:Thêm một giá trị mặc định trong DropDownList sau khi ràng buộc với cơ sở dữ liệu

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

Mã số:

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

Cảm ơn!

Trả lời

37

Sau khi liên kết dữ liệu, thực hiện điều này:

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

Hoặc làm theo gợi ý thứ hai của Brian nếu bạn muốn làm điều đó trong đánh dấu.

Bạn có thể thêm điều khiển RequiredFieldValidator và đặt InitialValue thành "NA".

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

Bạn có thể làm điều đó cách lập trình:

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

Hoặc thêm nó trong đánh dấu như:

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

đang theo chương trình của bạn sẽ không làm cho bạn "Chọn" item defult hoặc mục hàng đầu. Nó sẽ chỉ đơn giản là ở dưới cùng của danh sách và mục đầu tiên trong danh sách sẽ được chọn, trừ khi anh ta đặt 'SelectedValue'. Xem câu trả lời của tôi để biết chi tiết. –

+0

Có, cảm ơn @Justin. Chèn phương pháp thay vào đó sẽ làm điều đó. –

+0

Tuyệt. Nếu bạn chỉ cần một văn bản và giá trị trống làm giá trị mặc định của mình, bạn thậm chí không cần thêm bất kỳ Mục danh sách nào. AppendDataBoundItems = "True" sẽ thực hiện công việc. Cảm ơn! –

4

Bạn có thể thêm nó lập trình hoặc trong đánh dấu, nhưng nếu bạn thêm nó lập trình, chứ không phải là Add mục, bạn nên Insert nó làm vị trí bằng không để nó là vật phẩm đầu tiê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 Color", ""); 

Mục mặc định được mong đợi là mục đầu tiên trong danh sách. Nếu bạn chỉ cần Add, nó sẽ ở dưới cùng và sẽ không được chọn theo mặc định.

0

Giải pháp do Justin cung cấp nên hoạt động. Để chắc chắn sử dụng tài sản SelectedIndex cũng sẽ hữu ích.

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

thiết kế

<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")); 
} 
Các vấn đề liên quan