作为DataGrid的更改,VS2008中的GridView确实进行了相当多的修改,可是有些方法是在改的太不一样了,让人用起来无从下手。我觉得
GridViewCommandEventArgs的参数e就是一个相当典型的例子。
我查了网上很多地方,都找不到解决的办法,下面有几个给我提供很大帮助的网页:
关于在动态绑定gridview里,怎样取某列的列标题值!! http://tech.techweb.com.cn/archiver/tid-207011.html
GridView控件常见问题及处理方法 http://www.tzwhx.com/newOperate/html/1/11/111/6469.html
这里引用一下上面第二篇文章的话,大家就可以看出这个参数e的在DataGrid和GridView中到底有哪些不同之处了:
“在DataGrid中,要响应控钮列中的按钮点击事件,可以处理ItemCommand事件:事件的第一个参数source是object类型的,值为DataGrid,第二个参数e是DataGridCommandEventArgs类型的,e中包含四个属性:Item的值为按钮所在的行, CommandSource的值为所点击的按钮,CommandName的值为按钮在设计期定义的值,CommandArgument的值固定为空字符串。在使用中,可以根据Item来区分点击的是哪个行中的按钮,可以根据CommandName来区分一个行中的多个按钮。 ”
“在GridView中,要响应控钮列中的按钮点击事件,可以处理RowCommand事件:事件的第一个参数sender是object类型的,值为GridView,第二个参数e是GridViewCommandEventArgs类型的,e中仅包含三个属性,比DataGrid控件中的相应事件少了关键的Item属性,CommandSource的值也与DataGrid中的不一样,在这里为GridView,CommandName的值为按钮在设计期定义的值,CommandArgument的值为被点击的按钮所在行的索引。在使用中,可以根据CommandArgument来区分点击的是哪个行中的按钮,可以根据CommandName来区分一个行中的多个按钮。”
所以当我想在GridView取某行第二列的行值时,眼见着用不成e.Item.Cells[2].Text,心里那叫一个急啊!
不过仔细想了想,既然在DataGrid中,Item的值为按钮所在的行,那么我只需要将这个Item换成我所需要的行不就完了,问题顿时清晰了~
如果说在DataGrid中,我可以这样实现如下功能的话:
txtFirstNameEdit.Text = e.Item.Cells[2].Text;
那么在GridView中相应的实现方法就是这个:
int intEmployeeID = Convert.ToInt32(e.CommandArgument);
txtFirstNameEdit.Text = this.EmployeeGrid.Rows[intEmployeeID].Cells[2].Text;
请大家注意上面的黑体字,DataGrid中我们直接使用了参数e,而在GridView中不能这样使用。
我先得到所需的行号之后,再用这个行号找到所在的行,之后再找到这一行的某一列。
取到这个列值一定还有更多的方法,我这只是其中的一种,希望对大家有帮助。