2014-10-21 1 views
2

В моем веб-дизайне в 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 в форме в капли downlist выбранного события изменения индекса, как это.

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

} 

и в случае нажатия кнопки, как этот

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

} 

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

+0

У вас отлаживается код и проверяется, какое значение оно фактически передает? –

ответ

2

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

+0

Да, это сработало. Большое спасибо. – Sahil

3

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

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

fillGridByAuthor(DDAuthor.SelectedValue); 

EDIT

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

fillGridByAuthor(DDAuthor.SelectedItem.Text); 
+0

Спасибо за ваш ответ, но установив свойство автозапуска в списке Drop down, он работал. – Sahil

5

От MSDN:

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

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

fillGridByAuthor(DDAuthor.SelectedItem.Text); 
+1

Спасибо за ваш ответ, но установив свойство автозапуска в списке Drop down, он работал. – Sahil

+1

@Sahil: тогда вы не установили ['DataTextField'] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.datatextfield (v = vs.110) .aspx) и 'DataValueField' соответственно, не так ли? Однако вы должны начать использовать отладчик, так как это мощный инструмент для поиска ошибок. –

+0

Большое спасибо за помощь, я просто прочитал о том, что вы упомянули. Спасибо за помощь снова. – Sahil