Подтвердить что ты не робот

Добавление значения по умолчанию в раскрывающемся списке после привязки к базе данных

Я привязал свой 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";

Спасибо!

4b9b3361

Ответ 1

После привязки данных сделайте следующее:

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

Или выполните второе предложение Брайана, если вы хотите сделать это в разметке.

Вероятно, вы должны добавить элемент RequiredFieldValidator и установить его InitialValue в "NA".

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

Ответ 2

Вы можете сделать это программно:

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>

Ответ 3

Вы можете добавить его программно или в разметку, но если вы добавите его программно, а не 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, оно будет внизу и не будет выбрано по умолчанию.

Ответ 4

дизайн

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

Ответ 5

Решение, предоставленное Джастином, должно работать. Чтобы использовать свойство 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;