Добавление значения по умолчанию в раскрывающемся списке после привязки к базе данных
Я привязал свой 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";
Спасибо!
Ответы
Ответ 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;