Событие изменения выбранного индекса в раскрывающемся списке

В моем webfrom в asp.net у меня есть кнопка просмотра сетки, текстовое поле и раскрывающийся список. У меня есть такой метод для вызова и выбора данных в моем представлении сетки.

public void fillGridByAuthor(string searchKey)
{
    GVDetails.DataSource = new ViewAllBKByAuthorOP().searchAuthorByAUNM(searchKey);
    GVDetails.DataBind();
}

Это мой метод бизнес-уровня.

 public DataTable searchAuthorByAUNM(string searchKey)
{
    string query2 = "EXEC SelectBooksDTByAuthor'" + searchKey + "'";
    return new DataAccessLayer().executeTable(query2);
}

Я вызываю метод fillGridByAuthor в форме в раскрывающемся списке выбранного события изменения индекса, подобного этому.

 protected void DDAuthor_SelectedIndexChanged(object sender, EventArgs e)
 {
    fillGridByAuthor(DDAuthor.Text);

 }

и в событии нажатия кнопки, как это

 protected void btnSearch_Click(object sender, EventArgs e)
 {
     fillGridByAuthor(txtAuName.Text);

 }

Он работает нормально, когда кнопка нажата. Хотя я выбираю тот же элемент в раскрывающемся списке, он не дает мне того же результата. Что здесь неправильно?


person Sahil    schedule 21.10.2014    source источник
comment
Вы отладили код и проверили, какое значение он на самом деле передает?   -  person Rahul Singh    schedule 21.10.2014


Ответы (3)


Просто установите для свойства AutoPostBack вашего раскрывающегося списка значение true, и он будет работать как шарм.

person Hamid    schedule 21.10.2014

Из MSDN:

Свойство Text получает и устанавливает то же значение, что и свойство SelectedValue. Свойство SelectedValue обычно используется для определения значения выбранного элемента в элементе управления ListControl. Если ни один элемент не выбран, возвращается пустая строка ("").

Таким образом, свойство Text возвращает свойство Value, а не свойство Text текущего выбранного элемента. Вместо этого используйте SelectedItem.Text.

fillGridByAuthor(DDAuthor.SelectedItem.Text);
person Tim Schmelter    schedule 21.10.2014
comment
Спасибо за ваш ответ, но установка свойства автоматической отправки обратно в Drop downlist сработала. - person Sahil; 21.10.2014
comment
@Sahil: значит, вы не установили поле DataTextField и DataValueField соответственно, а вы? Тем не менее, вы должны начать использовать отладчик, так как это мощный инструмент для поиска ошибок. - person Tim Schmelter; 21.10.2014
comment
Большое спасибо за помощь, я только что прочитал о том, что вы упомянули. Еще раз спасибо за помощь. - person Sahil; 21.10.2014

Попробуйте добавить autopostback = true в свой выпадающий список. Это, вероятно, поможет

И вы должны сделать это:

fillGridByAuthor(DDAuthor.SelectedValue);

ИЗМЕНИТЬ

что Тим Шмельтер, наверное, лучше, потому что вы хотите, чтобы текст был таким:

fillGridByAuthor(DDAuthor.SelectedItem.Text);
person Koen    schedule 21.10.2014
comment
Спасибо за ваш ответ, но установка свойства автоматической отправки обратно в Drop downlist сработала. - person Sahil; 21.10.2014