#asp.net #data-binding
#asp.net #привязка к данным
Вопрос:
У меня есть ASP.NET Выпадающий список, который я привязываю данными к списку объектов, а затем он выдает исключение. Эта ошибка сводит меня с ума, потому что сообщение неверное, и значение явно существует в списке элементов, как показано на скриншоте:
Вот соответствующий ASP.NET разметка:
<asp:DropDownList ID="_ddlRequests" runat="server" AppendDataBoundItems="true" DataTextField="RequestNumber" DataValueField="RequestNumber">
<asp:ListItem Text="" Value="" />
</asp:DropDownList>
Комментарии:
1. возможно ли, что в вашей коллекции есть другой элемент со значением «»?
2. Не совсем. Единственный элемент в коллекции — это тот, который я объявил в ASP.NET разметка.
3. Проверьте свой запрос и убедитесь, что объект, который вы привязываете, имеет правильные свойства. Попробуйте эту ссылку, есть много людей, у которых была такая же проблема: forums.asp.net/t/1056921.aspx/6 /…
Ответ №1:
Возможно, стоит сначала привязать данные, а затем добавить ваше пустое значение. Что-то вроде:
_ddlRequest.Datasource = request;
_ddlRequest.DataBind();
_ddlRequest.Insert(0, new ListItem("", ""));
Единственная причина, по которой я предлагаю это, заключается в том, что я сталкивался с этим до и после того, как некоторое время бился головой в отчаянии, просто решил сделать это таким образом вместо этого.
Комментарии:
1. В итоге я сделал именно это 🙂
2. Я думаю, это потому, что вы указываете элемент списка в разметке. Это не существует в источнике данных, потому что вы добавляете это в разметку. Приведенный выше код от @Fishcake является хорошим способом добавления этого значения по умолчанию к указанному индексу (0). Затем вы можете установить его в качестве выбранного элемента и значения по умолчанию, используя _ddlRequest. Выбранный индекс=0;
3. Но этот метод не может обработать случай, когда несуществующий элемент не является пустым.
Ответ №2:
Вы можете использовать приведенный ниже код для очистки данных на DropDownList
_ddlRequest.Items.Clear()