当我们在GridView中想实现删除功能时,有两种方法
(具体可见我以前的blog “GridView经典删除操作,两种方法”一文
http://blog.csdn.net/spring21st/archive/2007/10/18/1831108.aspx
),
当我们使用设置GridView的DataKeyNames方法时,当是多张表关联的时候,我们就必须设置多个DataKeyNames
此时,在
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
dt.SpecialtyID = (int)GridView1.DataKeys[e.RowIndex].Value;
……
}获取主键的方法只能获取到一个。
此时,我们采取另外一种方法,不使用GridView控件的可视化编辑DataKeyNames,
在对GridView进行初始化时,加上
GridView1.DataKeyNames = new string[] { "specialtyid", "courseid" };
注意
:必须是string类型,后面的specialtyid,courseid是关联表的主键
在获取的时候我们就可以分别得到所需要的值
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
dt.SpecialtyID = Int32.Parse(GridView1.DataKeys[e.RowIndex]["specialtyid"].ToString());
dt.CourseID = Int32.Parse(GridView1.DataKeys[e.RowIndex]["courseid"].ToString());
……
}
因为我这里要求主键使用的是int类型,所以要进行类型转换。
参考网站:
关于GridView的多个主键字段设置问题
http://whx.tzgt.gov.cn/newOperate/html/1/11/111/478.html
当我们在GridView中想实现删除功能时,有两种方法(具体可见我以前的blog “GridView经典删除操作,两种方法”一文 http://blog.csdn.net/spring21st/archive/2007/10/18/1831108.aspx),当我们使用设置GridView的DataKeyNames方法时,当是多张表关联的时候,我们就必须设置多个DataKeyNames此时,在
在
Data
Grid中,要实现这个功能,隐藏列来存储键值是必须的,甚至是一个初学者需要摸索才能知道的技巧
Data
Key
Names
:
获
取或
设置
一个数组,该数组包含了显示在
GridView
控件中的项的主键字段的名称。
Data
Key
s:
获
取一个
Data
Key
对象集合,这些对象表示
GridView
控件中的每一行的数据键值。
看到这里,也许你会有所明白,针对批量选中操作的问题,...
虽然这不是一个很难的问题,但是是自己第一次遇到,所以就记录下来。
当我们在用
GridView
实现删除某一行的时候,由于该表
gridview
绑定的是一张由两个或者
多个
键做组合主键或者多张表关联的时候。。。我们就不能用传统的
GridView
1.
Data
Key
s[e.RowIndex].Value来
获
取值
。
那么我们就应该这样。。。
在初始化
Data
Key
Names
时:
GridView
1...
Data
Key
Names
='FID' //前台绑定一个值
GridView
1.
Data
Key
s[e.Row.RowIndex].Value.To
String
;
--------------------------------------------------------------------------------------------------------------------
Data
Key
Names
pace属性:
获
取或
设置
一个数组,该数组中包含了显示 在
GridView
控件中的项的主键字段的名称。
Data
Key
s属性:
获
取一个
Data
Key
对象集合,这些对象表示
GridView
控件中的每一行的数据的键值。
例如: 当要删除或修改
GridView
中的某一行信息时,需要
获
取当前行的关键字段的值,依据这个值在数据库中操作相应的字段。那么,
// 假设你的
GridView
控件的 ID 是
gridView
1
GridView
Row firstRow =
gridView
1.Rows[0];
TableCell firstCell = firstRow.Cells[0];
string
cellValue = firstCell.Text;
首先,我们
获
取
GridView
的第一行(索引为 0),然后
获
取该行的第一个单元格(索引为 0),最后
获
取单元格的文本值。
请注意,如果
GridView
中没有任何行或单元格,或者第一个单元格没有文本值,那么上述代码可能会引发异常。在使用之前,请确保
GridView
中至少有一行,并且第一个单元格包含文本值。