C# 如何获取行索引以便为单元格着色

C# 如何获取行索引以便为单元格着色,c#,asp.net,gridview,colors,indexing,C#,Asp.net,Gridview,Colors,Indexing,我有一个网格视图,其中包含一些序列号。每列都需要有唯一的编号序列。它是可编辑的,如果用户输入的数字已经在这个特定的列中,单元格将被涂成红色 到目前为止,我只给两个错误单元格中的第二个单元格上色(值相同)。如何给两个单元格着色。据我所知,我还需要使用行索引,但我不知道如何使用 这是密码 //colum2 string sValue2 = e.Row.Cells[4].Text; if (Values2.Contains(sV

我有一个网格视图,其中包含一些序列号。每列都需要有唯一的编号序列。它是可编辑的,如果用户输入的数字已经在这个特定的列中,单元格将被涂成红色

到目前为止,我只给两个错误单元格中的第二个单元格上色(值相同)。如何给两个单元格着色。据我所知,我还需要使用行索引,但我不知道如何使用

这是密码

            //colum2
            string sValue2 = e.Row.Cells[4].Text;

            if (Values2.Contains(sValue2))
            {
                // This value is a duplicate - color red
                e.Row.Cells[4].BackColor = System.Drawing.Color.Red;
                 //Response.Write("Warning... Error in pad no: " +e.Row.Cells[2].Text+ " dupliated value: " +e.Row.Cells[3].Text);


            }
            else
            {
                Values2.Add(sValue2);
            }
所有8列都是一样的

希望这是可以理解的。
事先非常感谢

您的问题不太清楚,但我会尽力帮助您,并根据我的理解作出回应

获取行索引有不同的方法

这取决于GridView控件的哪个事件,您的代码逻辑需要执行:

  • _行数据绑定:
    e.Row.RowIndex
  • _RowCommand:
    ((Control)e.CommandSource).将容器命名为GridViewRow.RowIndex
  • _行编辑:
    e.NewEditIndex
  • _行更新、行删除和行取消编辑:
    e.RowIndex
希望这有帮助

示例代码:

private bool IsCellToHighlight(GridViewCell cell)
{
bool highlightCell = false;
// Put your cell checking condition
// Example ..
highlightCell = (string.Compare(cell.Text, "Check Value", true) == 0);
return highlightCell;
}

private void HighlightCells(GridViewRow row)
{
for(int c=0; r<row.Cells.Count; c++)
{
if(this.IsCellToHighlight(row.Cells[c]))
{
// Apply required styling Code
// ..
}
}
}
private bool iscelltophighlight(GridViewCell单元格)
{
bool-highlightCell=false;
//把你的手机放在检查状态
//例如。。
highlightCell=(string.Compare(cell.Text,“Check Value”,true)==0);
返回高光电池;
}
专用空心高亮单元格(GridViewRow行)
{

对于(int c=0;r你的问题不是很清楚,但我会尽力帮助你,并根据我的理解作出回应

获取行索引有不同的方法

这取决于GridView控件的哪个事件,您的代码逻辑需要执行:

  • _行数据绑定:
    e.Row.RowIndex
  • _RowCommand:
    ((Control)e.CommandSource).将容器命名为GridViewRow.RowIndex
  • _行编辑:
    e.NewEditIndex
  • _行更新、行删除和行取消编辑:
    e.RowIndex
希望这有帮助

示例代码:

private bool IsCellToHighlight(GridViewCell cell)
{
bool highlightCell = false;
// Put your cell checking condition
// Example ..
highlightCell = (string.Compare(cell.Text, "Check Value", true) == 0);
return highlightCell;
}

private void HighlightCells(GridViewRow row)
{
for(int c=0; r<row.Cells.Count; c++)
{
if(this.IsCellToHighlight(row.Cells[c]))
{
// Apply required styling Code
// ..
}
}
}
private bool iscelltophighlight(GridViewCell单元格)
{
bool-highlightCell=false;
//把你的手机放在检查状态
//例如。。
highlightCell=(string.Compare(cell.Text,“Check Value”,true)==0);
返回高光电池;
}
专用空心高亮单元格(GridViewRow行)
{

对于(int c=0;r如果我答对了您的问题,您希望找出同一单元格中已包含相同数据的行的RowIndex,并将其颜色更改为红色

您可以编写一个方法,将包含该数据的每个单元格颜色更改为红色。 比如:

void colorCells(GridView GV, int CellIndex, string Text)
{
    foreach(GridViewRow row in GV.Rows)
    {
        if(row.Cells[CellIndex].Text == Text)
            row.Cells[CellIndex].BackColor = System.Drawing.Color.Red;
        //might use else to set to default color
    }
}
然后你可以这样使用:

    //colum2
    string sValue2 = e.Row.Cells[4].Text;
        if (Values2.Contains(sValue2))
        {
            // This value is a duplicate - color red
            colorCells(/* Get the reference for the grid view, e.g.: gridView1*/, 4, sValue2); 
        }
        else
        {
            Values2.Add(sValue2);
        }

如果我答对了你的问题,你想找出在同一单元格中已经包含相同数据的行的行索引,并将其颜色更改为红色

您可以编写一个方法,将包含该数据的每个单元格颜色更改为红色。 比如:

void colorCells(GridView GV, int CellIndex, string Text)
{
    foreach(GridViewRow row in GV.Rows)
    {
        if(row.Cells[CellIndex].Text == Text)
            row.Cells[CellIndex].BackColor = System.Drawing.Color.Red;
        //might use else to set to default color
    }
}
然后你可以这样使用:

    //colum2
    string sValue2 = e.Row.Cells[4].Text;
        if (Values2.Contains(sValue2))
        {
            // This value is a duplicate - color red
            colorCells(/* Get the reference for the grid view, e.g.: gridView1*/, 4, sValue2); 
        }
        else
        {
            Values2.Add(sValue2);
        }


此代码是否取自事件处理程序?什么是
e
变量?是否尝试过此操作?:
e.Row.BackColor=System.Drawing.Color.Red;
protectedvoid GridView1\u RowDataBound(对象发送方,GridViewRowEventArgs e)这是方法签名及其参数;)@YuriyRozhovetskiy这就是我在做的,不是吗?这段代码是从事件处理程序中提取的吗?变量是什么?你试过了吗?:
e.Row.BackColor=System.Drawing.Color.Red;
protectedvoid GridView1\u RowDataBound(对象发送者,gridvieweventargs e)这是方法签名及其参数;)@YuriyRozhovetskiy这就是我正在做的,不是吗?是的,这是RowDataBound方法。很抱歉,我忘了提到这段代码。所以gridview使用了这个方法,我知道有这个e.Row.RowIndex,但是你知道我如何使用它来给两个单元格着色,就像你看到的那样。到目前为止,我有点硬编码了每一列:e.Row.Cells[4].BackColor=System.Drawing.Color.Red;我不知道它是如何工作的,但它用错误的值给第二个单元格着色。你现在能更好地理解它吗:)谢谢,也许你可以尝试这样的方法:运行一个循环来读取每个列/单元格,然后在每次迭代中检查值。我在上面的回答中添加了示例代码。如果我做对了,这将检查整个gridview中的每个单元格,对吗?我需要的是检查每个列,并且只检查此特定列中的重复单元格。P.S javaScript不是我的强项:)然后将其反转。我建议不要在_RowDataBound事件中执行此操作。是的,这是RowDataBound方法。对不起,我忘了提及这段代码放在那里。所以gridview使用了这个方法,我知道有这个e.Row.RowIndex,但是你知道如何使用它来给两个单元格着色吗?正如你所看到的,我对每一列都进行了硬编码:e.Row.cells[4].BackColor=System.Drawing.Color.Red;我不知道它是如何工作的,但它用错误的值给第二个单元格着色。你现在能更好地理解它吗:)谢谢,也许你可以尝试这样的方法:运行一个循环来读取每个列/单元格,然后在每次迭代中检查值。我在上面的回答中添加了示例代码。如果我做对了,这将检查整个gridview中的每个单元格,对吗?我需要的是检查每个列,并且只检查这个特定列中的重复单元格。P.S javaScript不是我的强项:)然后将其反转。我建议不要在_RowDataBound事件中这样做。哇,太好了。谢谢。现在我测试了它,结果如下:这不是我所期望的,但代码对我来说似乎非常正确。我现在得到的是第一个单元格的颜色错误,而不是第二个单元格(但两者都必须着色)。只有当我有第三个值时,这两个单元格才被涂成红色,但分别不是第三个。我不明白:(哇,太好了。谢谢。现在我测试了它,结果不是我期望的,而是代码