Как добавить параметр "Select" по умолчанию к этому ASP.NET элемент управления DropDownList?
Я новый ASP.NET разработчик и я пытаемся изучить Linq-to-Entities. Я пытаюсь связать DropDownList с оператором Linq для получения списка состояния в сущности Status. Все работает нормально. Тем не менее, я пытаюсь добавить опцию "выбрать" в раскрывающийся список, но она не работает со мной. не могли бы вы сказать мне, как это исправить?
ASP.NET Код:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
Код:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DropDownList1.Items.Add(new ListItem("Select", "0", true));
bindStatusDropDownList();
}
}
private void bindStatusDropDownList()
{
Status status = new Status();
DropDownList1.DataSource = status.getData();
DropDownList1.DataValueField = "ID";
DropDownList1.DataTextField = "Description";
DropDownList1.DataBind();
}
обновление:
Я также попытался сделать в наборе разметки DropDownList, но это не сработало со мной
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Selected="True" Value="0" Text="Select"></asp:ListItem>
</asp:DropDownList>
6 ответов
причина, по которой он не работает, заключается в том, что вы добавляете элемент в список, а затем переопределяете весь список новым DataSource
который очистит и повторно заполнит ваш список, потеряв первый добавленный вручную элемент.
Итак, вам нужно сделать это в обратном порядке:
Status status = new Status();
DropDownList1.DataSource = status.getData();
DropDownList1.DataValueField = "ID";
DropDownList1.DataTextField = "Description";
DropDownList1.DataBind();
// Then add your first item
DropDownList1.Items.Insert(0, "Select");
хотя это довольно старый вопрос, другой подход-изменить AppendDataBoundItems собственность. Таким образом, код будет:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
AppendDataBoundItems="True">
<asp:ListItem Selected="True" Value="0" Text="Select"></asp:ListItem>
</asp:DropDownList>
Я попытался со следующим кодом. это работает для меня отлично
ManageOrder Order = new ManageOrder();
Organization.DataSource = Order.getAllOrganization(Session["userID"].ToString());
Organization.DataValueField = "OrganisationID";
Organization.DataTextField = "OrganisationName";
Organization.DataBind();
Organization.Items.Insert(0, new ListItem("Select Organisation", "0"));
Переместить DropDownList1.Предметы.Добавить (new ListItem ("Select"," 0", true)); После bindStatusDropDownList();
так:
if (!IsPostBack)
{
bindStatusDropDownList(); //first create structure
DropDownList1.Items.Add(new ListItem("Select", "0", true)); // after add item
}
Если вы сделаете "добавить", он добавит его в нижнюю часть списка. Вам нужно сделать "вставить", если вы хотите, чтобы элемент был добавлен в верхнюю часть списка.
Private Sub YourWebPage_PreRenderComplete(sender As Object, e As EventArgs) Handles Me.PreRenderComplete
If Not IsPostBack Then
DropDownList1.Items.Insert(0, "Select")
End If
End Sub