我有两个下拉菜单说ddl1和ddl2,我的aspx页面中的gridview说Home.aspx。
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dtFeedFiles;
try
{
ddl2.DataSource = dtFeedFiles;
ddl2.DataBind();
}
catch (Exception ex)
{
Response.Redirect(ConfigurationManager.AppSettings["Errorpage"]);
}
}
protected void ddl2_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dtFeed;
try
{
gridview.DataSource = dtFeed;
gridview.DataBind();
}
catch (Exception ex)
{
Response.Redirect(ConfigurationManager.AppSettings["Errorpage"]);
}
}
在ddl1_selectedIndexChanged事件中,我正在加载ddl2.在ddl2_selectedIndexChanged事件中,我正在加载一个网格。
ddl2_selectedIndexChanged事件发生错误,我将其重定向到Errorpage.aspx。
现在,当我单击浏览器后退按钮时,它会转到Home.aspx,当我更改dll1 ddl1_selectedIndexChanged时,ddl2_selectedIndexChanged事件将被触发。为什么会这样?
答案 0 :(得分:0)
当您在ddl2
的事件中更改ddl1
的记录来源时,会触发SelectedIndexChanged
事件。这是设计的,就好像你在ddl2
中选择了一样,选择就会被删除。
通常你需要有一个保护条款,例如
if (ddl2.SelectedIndex < 0)
{
// return the gridview to an uninitialized state?
return;
}
如果实际上没有为任何下拉列表选择索引,则为了防止事件继续执行。