grid1.DataKeys[e.RowIndex].Value.ToString()的用法诠释

grid1.DataKeys[e.RowIndex].Value.ToString()的用法诠释

一、先来说下:[e.RowIndex]里的 e 和Datakeys的意思:

1、

e实际上是一个事件参数,当你点哪行e就是哪行,可以用RowIndex属性来取得该行的索引;

2、

而DataKeys是GridView的主键,可以使用DataKeys[行号]的方式取得,它返回一个DataKey

对象,然后就可以用DataKey.Value得到该行的主键值。
注意:在将数据源绑定到GridView上时,应该指定它的DataKeyField属性,才能正常使用。

二、再来解释下GridView1.DataKeys:

举个例子来说吧  你将一个student表绑定到grid上  这个表里有一些字段 包括id  姓名  学号 等等 

 grid的DataKey 属性设置了 datakey=“学号”
下边开始解释问题
GridView1.DataKeys是一个数组, 存储的是数据表中的一列的值 , 这一列 就是设为DataKeys的一列

即[学号]这一列 GridView1.DataKeys[e.RowIndex]则是学号这一列这个数组中的一个值,

  索引为当前行的行号  也就是说GridView1.DataKeys[e.RowIndex]是当前行所对应的数据行这一行

 的学号这个datakey。

GridView1.DataKeys[e.RowIndex].Value是什么?

这里就是当前行所对应的数据行这一行的学号这个datakey 所存储的值 即当前选择这个学生的学号。

三、也许大家会对下面的问题感到疑惑:

GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString() 
与 
GridView1.DataKeys[e.RowIndex].Value.ToString()  的区别

是不同事件中获取当前选中行行号的不同方法  
在grid的行相关事件中  可以直接用e来得到当前行 但是在非grid行事件中 作为e的事件触发对象就不是行,

 所以要用GridView1.SelectedIndex 来获取当前选中行的行号





e.Row.RowType == DataControlRowType.DataRow诠释(实例解释)

代码语句如下: 

protected void OnRowCreate(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Normal)
                || e.Row.RowState == DataControlRowState.Normal)
            {
                ImageButton btnDelete = (ImageButton)(e.Row.FindControl("btnDelete"));
                btnDelete.Attributes["onclick"] = "javascript:return confirm('真的要删除码?');";
            }         
        }
    }

一、

首先解释下: if (e.Row.RowType == DataControlRowType.DataRow)

e.Row.RowType  是指当前行的类型
DataControlRowType 是GridView的行的类型集合 , 其中的DataRow是数据绑定行
这个判断语句的意思就是判断当前行是不是数据绑定行。

二、指定数据控件(例如 DetailsView 或 GridView)中行的状态。

e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Normal)

判断当前行的状态,当前上面的代码用的少:要看看这个也许用的多:

if ((e.Row.RowState == (DataControlRowState.Edit | DataControlRowState.Alternate)) || (e.Row.RowState == DataControlRowState.Edit))

下面是引用msdn里的说明:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值