当前位置:  开发笔记 > 后端 > 正文

为什么SelectedIndexChanged事件不是从GridView中的下拉列表触发的?

如何解决《为什么SelectedIndexChanged事件不是从GridView中的下拉列表触发的?》经验,为你挑选了1个好方法。

我无法触发我的下拉列表的SelectedIndexChanged.我有以下内容:

Review Send Back to Level1

在我的代码背后我有这个:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    this.lblCity.Text = ((DropDownList)sender).SelectedValue;
}

如果我把这个相同的ddl放在gridview之外,它就会触发.

回发正在发生,autopostback设置为true.事件永远不会发生.为什么我不能在gridview中触发我的事件?

谢谢.



1> Cerebrus..:

好吧,这个问题是在一个多月前提出的,现在可能无关紧要,但是@LFSR最近很友好地编辑它,它在"活动问题"列表中.

既然没有答案(224次观看!),我想我应该试一试:


问题是在GridView的上下文中,DropDownList(以下称为DDL)是一个动态控件,因此它的事件需要在Postback上重新附加.

理解这个概念后,解决方案变得相对简单:

ASPX:


  Review
  Send Back to Level1

CS代码:

protected void Page_Load(object sender, EventArgs e)
{
  if(!Page.IsPostBack)
  {
    // Bind the GridView to something.
    DataBindGrid();
  }
}

protected void DDL1_SelectedIndexChanged(object sender, EventArgs e)
{
  this.lblCity.Text = ((DropDownList)sender).SelectedValue;
}

protected void grdPoll_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if(Page.IsPostBack)
  {
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
      DropDownList ddl = e.Row.FindControl("DDL1") as DropDownList;
      if(ddl != null)
      {
        ddl.SelectedIndexChanged += new EventHandler(DDL1_SelectedIndexChanged);
      }
    }
  }
}

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有