c# - 如何检查 RowDataBound 中的组合 RowState 'Altering | Edit'?

标签 c# asp.net gridview data-binding rowstate

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

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 的样子):

enter image description here

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

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

if 语句中的代码应在行未处于编辑(Alternate | Edit)模式时执行,这就是为什么我将 != 作为运算符

有谁知道我怎样才能捕捉到组合模式 Alternate |编辑和编辑模式一起?

最佳答案

您可以 checkin :

  • 编辑模式:

    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
    }
}

关于c# - 如何检查 RowDataBound 中的组合 RowState 'Altering | Edit'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46235347/

相关文章:

c# - 是否可以使用并行端口对 LCD 20X2 显示器进行编程?

c# - 使用 ID 将表中的值解析为另一个表

android - 从 sleep 模式恢复时保留 GridView

C# : interface : same method in 2 interfaces

c# - 程序集是否有初始化和/或终止例程?

c# - 同一整数可以有多个枚举值吗?

asp.net - GridView 中 TemplateField 上的 header

c# - 如何在不知道任何字段的情况下填充 gridView

c# - ajax.actionlink 调用 Controller Action

java - 单击时更改 gridview 单元格的颜色