DataView(2):RowState

在Dataview控件开启了编辑功能后,点“编辑”链接一般来说都会改变该行为Edit状态,比如在RowDataBound这类事件中用

if (e.Row.RowState  ==  DataControlRowState.Edit)
{
 
string  a = " test " ;
}

来判断是否当前行处于Edit状态,其实这样照理说没任何问题,但是会遇到一个问题,在单数行执行上面的代码块没问题(比如1,3,5,7..行),但是双数行就不会执行(比如2,4,6..行),仔细调试跟踪+MSDN发现双数行的RowState不仅仅有"edit"状态还有"Alternate"状态,MSDN中Alternate的说明是"指示该数据控件行是交替行",难怪不得上面判断代码不执行,把他们都转换成int跟踪看看

  int  i  =  ( int )(e.Row.RowState);//单行为4,交替行为5
 
int  j  =  ( int )(DataControlRowState.Edit);//4

跟踪调试发现在交替行时候i值是5而j是4 所以上面IF语句条件判断不正确当然不会执行了,在单行时候i和j的值都为4,上面IF条件判断4==4所以执行没问题。

这里介绍一种方法不管是单行还是交替行都认为是EDIT状态:

if  ((e.Row.RowState  &  DataControlRowState.Edit)  !=   0 )

因为不管4&4还是5&4都不等于0,所以上面IF执行成功,如果要判断非edit状态,比如说刚进入dataview的时候我们可以通过

if  ((e.Row.RowState  &  DataControlRowState.Edit)  ==   0 )  
来判断,这个时候RowState的值是 Normal也就是0,自然0&4==0 上面if执行成功。

一点点学习经验,有什么不对地方还请指明。





 

 

转载于:https://www.cnblogs.com/raoqn/archive/2009/03/12/1409229.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值