您的位置:首页 > 其它

获取 GridView 行数据的常见两种方式

2009-09-24 11:39 169 查看
我们在用asp.net GridView控件时经常需要在后台读取一行的数据,常见的方式有以下几种:

1.在后台RowCommand 事件中先取得行号,再根据行号去访问各列的值,具体方法可參考:/article/5508244.html

2.通过[b]CommandArgument参数进行传递,具体[/b]方法如下:

在页面代码中,CommandArgument='<%#Eval("ID")+","+Eval("Name")+","+Eval("Age")%>'

后台取值方法如下: object[] arguments = e.CommandArgument.ToString().Split(',');

操作很简单,现在说一下我理解的原理。

CommandArgument是一个object类型的属性,要传多个参数只能靠字符串拼接然后在后台拆分。

还好,asp.net Eval方法很容易完成这样的功能,在CommandArgument='<%#Eval("ID")+","+Eval("Name")+","+Eval("Age")%>'中

执行过程如下,先分别对Eval进行绑定,然后把<%# %>里的东西ToString一下,再封装成object进行递。

不信你可以试试用这种方式CommandArgument='<%#Eval("ID"),Eval("Name"),Eval("Age")%>'

执行时就会报错“ToString”方法没有采用“4”个参数的重载,为什么了?

按上面的原理,假如id=1,name=kuitar,age=24. 则后一种方式<%# %>里的内容为"1","kuitar","25"
现在ToString("1","kuitar","25",''可能还有个另外的参数,呵呵'),显然会出错。

而用第一种方式则不一样,绑定后<%# %>里的内容为"1,kuitar,25",因为+号起了作用。这时候ToString应该没有问题了。

[注意:]本文章从果4点儿的博客中转载来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: