下载事件在asp.net中不必要地触发

时间:2014-09-16 11:38:17

标签: c# asp.net

我有两个下拉菜单说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事件将被触发。为什么会这样?

1 个答案:

答案 0 :(得分:0)

当您在ddl2的事件中更改ddl1的记录来源时,会触发SelectedIndexChanged事件。这是设计的,就好像你ddl2中选择了一样,选择就会被删除。

通常你需要有一个保护条款,例如

if (ddl2.SelectedIndex < 0)
{
   // return the gridview to an uninitialized state?
   return;
}

如果实际上没有为任何下拉列表选择索引,则为了防止事件继续执行。