7

在我的页面上,我设置了一个包含几列的 GridView。我编写了一个更新、删除和插入方法。当我的 GridView 绑定其数据时,会调用以下方法:

protected void GridViewAutomat_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if(e.Row.RowState != DataControlRowState.Edit)
        { 
            //some code

        }
    }
}

我的第二个 if 语句的问题是当我的 GridView 进入编辑模式时(当我想更新我的 GridView 中的记录时)它没有捕捉到RowState Alternate | 编辑看起来像这样(这是我调用更新方法后 RowState 的样子):

在此处输入图像描述

当我尝试单独组合两个 RowStates 时,它也不起作用:

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

当行不处于编辑(备用|编辑)模式时,应该执行 if 语句中的代码,这就是我!=作为操作员的原因

有谁知道我怎样才能赶上组合模式Alternate | 编辑和编辑模式在一起?

4

2 回答 2

2

你可以检查它:

  • 编辑模式:

    e.Row.RowState != DataControlRowState.Edit
    
  • 改变 | 编辑模式:

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

在解决方法中:

if (e.Row.RowType == DataControlRowType.DataRow &&
    e.Row.RowState != DataControlRowState.Edit && 
    e.Row.RowState != (DataControlRowState.Edit | DataControlRowState.Alternate))
{ 
    //... Here is logic
}

或者:

if (e.Row.RowType == DataControlRowType.DataRow)
{
    if (e.Row.RowState != DataControlRowState.Edit && 
        e.Row.RowState != (DataControlRowState.Edit | DataControlRowState.Alternate))
    {
        //... here is logic
    }
}
于 2017-09-18T07:27:06.430 回答
1

RowState值是一个DataControlRowState枚举,它具有Flags属性集。这意味着我们可以调用Enum.HasFlag,如下所示:

if (e.Row.RowType == DataControlRowType.DataRow &&
    e.Row.RowState.HasFlag(DataControlRowState.Edit))
{ 
    //... Here is logic
}
于 2020-05-14T09:43:35.287 回答