RowCommand上的Gridview单元格值

时间:2012-03-27 20:54:32

标签: c# sql gridview

我试图从网格视图中获取单元格值,但遇到了一些问题。我设置的代码与此example类似,只是我在服务器端添加了按钮字段。出于某种原因,RowCommand在单击单元格值时会触发两次? TIA提供任何帮助

页面加载为空:    code

 protected void Page_Load(object sender, EventArgs e)
{

}

添加按钮字段:     code

   foreach (DataColumn col in transposedTable.Columns)
    {

        ButtonField bfield = new ButtonField();



        bfield.DataTextField = col.ColumnName;

        bfield.HeaderText = col.ColumnName;

        bfield.CommandName = "ColumnClick";

        gvTest.Columns.Add(bfield);

    }

RowDataBound和RowCommand事件与上面的示例链接相同

3 个答案:

答案 0 :(得分:1)

好的......在MSFT连接中似乎有一个开放的bug ... GridView RowCommad Event Firing Twice

似乎在“变通办法”标签中发布了一些解决方法...

希望这会有所帮助......

答案 1 :(得分:1)

这是一个已知的错误。我遇到了同样的问题。

我从事件声明后面的代码中删除了句柄GridView.RowCommand,并且 将此行添加到.aspx源中网格的属性声明:

OnRowCommand="GridView_RowCommand"

工作得很好。

答案 2 :(得分:0)

访问网格中行值的一种方法是使用Cells集合以及网格的当前索引(可以通过eventargs访问),如下所示

void YOUR_GRID_EVENT(Object sender, GridViewDeleteEventArgs e) 
{
    Grid.Rows[e.RowIndex].Cells[0];
}

你也可以使用如下的findcontrol:

var txtName = e.Row.FindControl("txtName") as TextBox;

希望这会有所帮助......

<强>更新

同时检查你的代码以确保正确调用GridView的DataBind()方法...因为每次调用GridView.DataBind()时...都会调用网格视图的rowcommand事件...我想想(猜测)你当前在你的onload以及按钮点击事件中都有一个gridView.DataBind()因为这可能会导致rowcommand事件被调用两次......如果不是这样的话就发布一些代码这样我们就可以探索更多...