GridView编辑 - 检查行颜色

时间:2015-02-24 20:18:44

标签: c# asp.net gridview

我想知道在GridView_OnRowEditing事件期间是否可以检查GridViewRow的BackColor。

当我尝试获取row.BackColor

时,我的当前代码仅返回[Name = 0,ARGB =(0,0,0,0)]

这是我的代码:

    protected void GridView_OnRowEditing(object sender, GridViewEditEventArgs e)
    {
        var row = GridView1.SelectedRowStyle;
        if (row.BackColor == Color.White)
        {
            errorLabel.Text = "ERROR - cannot edit this row";
        }
        else
        {
            //Different code
        }
    }

提前致谢。

编辑:使用asp GridViewRow有替代DataGridViewRow.Tag吗?

2 个答案:

答案 0 :(得分:2)

我能够通过这样做找到我自己的解决方案:

if (GridView1.Rows[e.NewEditIndex].BackColor != Color.SeaGreen &&
                GridView1.Rows[e.NewEditIndex].BackColor != Color.IndianRed)
        {
            e.Cancel = true;
            errorLabel.Text = "Please scan roll before updating QtyRun";
        }
        else
        {
            //do something else
        }

@RichardDias的想法可以,但 asp GridViewRow 允许标记属性( DataGridViewRow 允许用于Tag属性。)

我不会使用他的方法的另一个原因是因为我已经花时间在我的gridview中突出显示特定的行(需要完成,无可替代)。要添加另一种确认方法'似乎效率低下。

通过使用我的方法,我能够利用我的初始确认行颜色'取消编辑事件的方法。无论如何,谢谢你@RichardDias的帮助。

答案 1 :(得分:1)

尝试做类似的事情:

public void ScanRows()
{
    foreach (DataGridViewRow row in GridView1.Rows)
    {
       row.DefaultCellStyle.BackColor = Color.Green;
       //Indicate that this row already was scanned
       row.Tag = true;
    }
}

protected void GridView_OnRowEditing(object sender, GridViewEditEventArgs e)
{
    var row = GridView1.SelectedRow;
    if (!((bool)(row.Tag ?? false)))
    {
       errorLabel.Text = "ERROR - cannot edit this row";
    }
    else
    {
        //Different code
    }
}