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事件中这样做。哇,太好了。谢谢。现在我测试了它,结果如下:这不是我所期望的,但代码对我来说似乎非常正确。我现在得到的是第一个单元格的颜色错误,而不是第二个单元格(但两者都必须着色)。只有当我有第三个值时,这两个单元格才被涂成红色,但分别不是第三个。我不明白:(哇,太好了。谢谢。现在我测试了它,结果不是我期望的,而是代码