2013-07-17 2 views
0

Ситуация: Я заполняю SqlDatasource DropDownList переменной строки SQL, которая зависит от ввода пользователем на странице (при необходимости, используя разные таблицы). После установки соответствующей строки я использую DataBind для SqlDataSource, чтобы заполнить раскрывающийся список соответствующими данными и вручную добавить один параметр («Все») к значениям. Я делаю это в Page_Load страницы (тогда я знаю, какую строку SQL использовать).C# asp dropdownlist databind empty dataset selectedindex

Проблема: Это прекрасно работает, если SQL не возвращает пустой набор данных. Если это так, страница изначально загружается с пустыми списками, кроме «Все». После этого, независимо от того, что я делаю (например, нажмите какую-то совершенно несвязанную кнопку), я получаю в NEXT Page_Load страницы: System.ArgumentOutOfRangeException не был обработан кодом пользователя Message = 'KLFDDropDownList' имеет SelectedIndex, который является недопустимым, поскольку он не существует в списке элементов. Значение SelectedIndex равно 0.

Что я делаю неправильно?

if (Typeselection == "3") KLFDSqlDataSource.SelectCommand = KLFDSQLhistorie; 
else KLFDSqlDataSource.SelectCommand = KLFDSQL; 
KLFDSqlDataSource.SelectParameters.Clear(); 
KLFDSqlDataSource.SelectParameters.Add("GBID", DbType.String, userName); 
//User.Identity.Name); 
//TODO KLFDDropDownList.DataBind(); 
+0

Это должно быть помечено asp.net, а не классический – John

ответ

0

может быть вы передаете выпадающий выбран индекс в качестве индекса для источника данных, а из выпадающего вы получаете индекс 0, но источник данных пуст, поэтому нет 0 индекс

+0

нет, строка SQL основана на других вещах, не выбранном индексе – Jur

+0

при загрузке страницы, вы используете выпадающее выбранное значение индекса –

+0

нет, не используя его. Даже не использовал dd на начальной загрузке, которая преуспела (с пустым набором тоже ...) – Jur

Смежные вопросы