我试图从网格视图中获取单元格值,但遇到了一些问题。我设置的代码与此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事件与上面的示例链接相同
答案 0 :(得分:1)
似乎在“变通办法”标签中发布了一些解决方法...
希望这会有所帮助......
答案 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事件被调用两次......如果不是这样的话就发布一些代码这样我们就可以探索更多...