代码之家  ›  专栏  ›  技术社区  ›  sarsnake

更新时从GridView内的下拉列表中获取选定值

  •  0
  • sarsnake  · 技术社区  · 15 年前

    我有一个GridView,每行都有编辑按钮。单击后,其中一列变成下拉列表,用户可以在其中选择值。“编辑”按钮变为“更新”-这是一个非常简单的常见场景。

    现在,我似乎无法在单击更新后抓取所选下拉列表。这是我的密码:

        protected void gv_UpdateRow(string arg)
    {
        int currentIndex = gv.EditIndex;
        gv.EditIndex = -1;
    
        GridViewRow currentRow = gv.Rows[currentIndex];
    
        try
        {
          string value2 = ((DropDownList)currentRow.FindControl("ddlValueTwo")).SelectedItem.ToString();
    
        }
        catch
        {
            Response.Write("error");
        }
    
    
        BindGridView(); 
    }
    

    所以基本上,程序执行总是在catch语句处结束。我已检查并找到下拉列表,当未找到所选项目时引发异常。

    有什么好处?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Colin    15 年前

    看起来像是数据绑定错误,您正在尝试访问尚未出现的数据。。。

        2
  •  1
  •   sarsnake    15 年前

    知道了!

    但是,我忘了在这里提到的一件事是,所有这些代码都位于用户控件(ascx文件)中,并且IsPostBack属性应用于页面而不是控件,这在我的例子中是无用的。例如,在我的情况下,我手动添加控件,因此IsPostback将始终为真,因此为了避免此问题,我必须实现基于会话的解决方案。希望这对别人有帮助。

    也有usercontrol.IsPostBack属性,但它没有按预期的那样执行,也许他们在3.0中正确地使用了它

        3
  •  0
  •   Harv    15 年前

    首先,您可能应该执行SelectedItem.Value,而不是SelectedItem.ToString()。