我在一个下拉列表中列出了员工姓名。通过选择任何员工,我在gridview中显示员工详细信息。
默认情况下,dropdownlist将第一个项目作为选定项目。因此,当我选择其他项目时,它仅返回第一个索引。 我的代码:
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();
}
答案 0 :(得分:1)
将你的页面加载代码置于if条件中,这样它只是在第一次加载页面时执行,否则每当回发页面加载被调用并且你的代码将被执行时,这就是它每次被设置为第一项的原因:
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
DisplayDatainGrid(); //All data in GridView
AddDataDropList(); //Load data in Dropdownlist
}
}
目前每次你的页面加载代码都是exxecuting时不应该发生。
答案 1 :(得分:0)
将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"];
{
}