2009-06-12 62 views
0

我有一个GridView选择的值,每行有编辑按钮。点击后,其中一列变成一个下拉列表,用户可以选择值。编辑按钮变成更新 - 非常简单的通常情况。现在获取从下拉列表中选择一个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语句结束。我已经检查并找到下拉列表,当未找到所选项目时抛出异常。

什么给?

我使用C#asp.net 2.0网站形成

+0

在下拉列表中的值静态或正在绑定? – 2009-06-12 17:50:39

回答

1

得到它!

这是的IsPostBack,我错过了它,所以在GridView当时正在反弹每个页面负载,并且因为下拉列表是网格内的数据丢失。

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

还有usercontrol.IsPostBack属性,但它并没有达到预期效果,或许他们是对3.0

0

首先想到的是,你应该做的可能,而SelectedItem.Value比SelectedItem.ToString()。

+1

或者只是((DropDownList的)currentRow.FindControl( “ddlValueTwo”))的SelectedValue。 – 2009-06-12 17:43:38

1

看起来像一个绑定错误,您正在尝试中不存在尚未哟访问数据...

相关问题