下拉控件所选索引更改事件

本文关键字:事件 索引 控件 | 更新日期: 2023-09-27 18:27:19

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

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

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

下拉控件所选索引更改事件

来自MSDN:

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

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

fillGridByAuthor(DDAuthor.SelectedItem.Text);

只需将下拉列表的AutoPostBack属性设置为true,它就会像符咒一样工作。

尝试将autopostback=true添加到您的下拉列表中。这可能有助于

而且,你应该这样做:

fillGridByAuthor(DDAuthor.SelectedValue);

编辑

Tim Schmelter可能更好,因为你想要文本所以:

fillGridByAuthor(DDAuthor.SelectedItem.Text);