C# 中的 DropDownList 清除选择 ASP.Net

DropDownList Clear Selection in C# ASP.Net

我在一个下拉列表中列出了员工姓名。通过 selecting 任何员工,我在数据库中的 gridview 中显示员工详细信息。

默认情况下,下拉列表的第一个项目是 selected item.So 当我 select 另一个项目它 returns 只有第一个索引。 我的代码:

protected void FilterBtn_Click(object sender, EventArgs e)
{
  if (EmployeeList.SelectedIndex > -1)
  {
      sInitQuery = sInitQuery + " WHERE (EmployeeName ='" + EmployeeList.SelectedItem.ToString() + "')";
  }
  if (GlobalCS.OpenConnection() == true)
  {
            GridView1.DataSource = null;
            GridView1.DataBind();    

            MySqlCommand cmd = new MySqlCommand(sInitQuery, GlobalCS.objMyCon);
            MySqlDataReader reader = cmd.ExecuteReader();
            GridView1.DataSource = reader;
            GridView1.DataBind();
            reader.Close();
  }
  GlobalCS.CloseConnection();
  EmployeeList.ClearSelection();
}

将您的页面加载代码置于 if 条件中,以便它在页面加载时第一次执行,否则每当 post 返回时页面加载被调用并且您的代码将被执行,这就是它的原因每次都设置为第一项:

 protected void Page_Load(object sender, EventArgs e) 
 {
    if(!Page.IsPostBack)
    { 
       DisplayDatainGrid(); //All data in GridView 
       AddDataDropList(); //Load data in Dropdownlist 
    }
 }

目前每次执行您的页面加载代码时都不应发生这种情况。

将 EmployeeList.SelectedIndex 添加到 ViewState。

protected void EmployeeList_SelectedIndexChanged(object sender, EventArgs e)
{
  ViewState.Add("employeeListIndex", EmployeeList.SelectedIndex);
}

然后,在Page_Load中,读取ViewState并赋值给EmployeeList.SelectedIndex。

void Page_Load(object sender, EventArgs e)
{
  if(ViewState["employeeListIndex"] != null)
  {
    EmployeeList.SelectedIndex = ViewState["employeeListIndex"];
  {
}