我 们经常有这样的需求:用GridView显示数据时候,要显示的数据中没有主键,但是我们却需要主键(更新或者删除操作),在ASP.NET中的 GirdView中,如果我们用这样方法(也绑定主键那列,但是只是不显示,设置Visualable=false)是不可行的。现在设置了不显示的列的 数据已经不会再发送到客户端了。
难道就没办法了么?当然有,GridView提供了一个叫做DataKeyNames的属性。设置它就可以将那些不在客户端显示的数据放在服务器端了。使用的时候也很简单。
只要设置m_GridView1.DataKeyNames = new string[] { "CategoryID" }; 就行了。当然了,可以设置很多列。
想得到值的时候,就这样用
m_GridView1.DataKeys [e.RowIndex].Values[0]。它是一个和列对应的数组,里面的值也是一个数组,所以比如想得到第二行对应的CategoryID就这样 写m_GridView1.DataKeys[1.Values[0].ToString()。
我忘了少说了一点。一般GridView都是绑定到一个数据源上,这时当有删除和更新操作时候,GridView可以调用你给它制定的数据源中的删除和更新的方法。这时候,设置了DataKey中的参数,会自动传递到删除或者更新的方法中。
是不是很简单很方便啊。呵呵。