下拉控制选定的索引更改事件

时间:2014-10-21 06:45:24

标签: c# asp.net dropdownbox

在asp.net的webfrom中,我有一个网格视图,一个按钮,一个文本框和一个下拉列表。 我有一个这样的方法来调用并选择我的网格视图中的数据。

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);

 }

单击按钮时工作正常。虽然我在下拉列表中选择了相同的项目,但它并没有给我相同的输出。 这里有什么不对?

3 个答案:

答案 0 :(得分:5)

来自MSDN

  

Text属性获取并设置与SelectedValue相同的值   财产呢。 SelectedValue属性通常用于   确定ListControl控件中所选项的值。   如果未选择任何项目,则返回空字符串("")。

因此Text属性返回Value而不是当前所选项目的Text属性。请改用SelectedItem.Text

fillGridByAuthor(DDAuthor.SelectedItem.Text);

答案 1 :(得分:3)

尝试在您的下拉列表中添加autopostback = true。它可能会有所帮助

而且,你应该这样做:

fillGridByAuthor(DDAuthor.SelectedValue);

修改

蒂姆·施梅特尔可能更好,因为你想要这样的文字:

fillGridByAuthor(DDAuthor.SelectedItem.Text);

答案 2 :(得分:2)

只需将下拉列表的AutoPostBack属性设置为true,它就像魅力一样。