从UpdateView中的GridView中的下拉列表中获取选定的值

时间:2009-06-12 17:34:04

标签: c# gridview

我有一个GridView,每行都有Edit按钮。单击后,其中一列变为下拉列表,用户可以在其中选择值。编辑按钮变为更新 - 非常简单的常规方案。

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

    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语句中结束。我已经检查并找到了下拉列表,当找不到所选项时抛出异常。

是什么给出了?

我使用c#asp.net 2.0 web表单

3 个答案:

答案 0 :(得分:1)

看起来像数据绑定错误,您正在尝试访问尚不存在的数据...

答案 1 :(得分:1)

得到了它!

是IsPostback,我错过了它,因此gridview在每次加载页面时都会被反弹,并且由于下拉列表位于网格内部,因此数据丢失了。

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

还有usercontrol.IsPostBack属性,但它没有按预期执行,也许它们正确地适用于3.0

答案 2 :(得分:0)

首先想到的是你应该做SelectedItem.Value而不是SelectedItem.ToString()。