我想把Gridview某一列里最小的十个数值变色,我的代码如下,但老提示错误,找不出什么错误。或者有更好的写法?
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
double[] a = new double[GridView1.Rows.Count]; \\定义一个数组
for (int i = 0; i <= GridView1.Rows.Count -1; i++)
{
a[i] =Convert.ToDouble(GridView1.Rows[i].Cells[4].Text); \\把GridView1的某列的值赋值到这个数组
}
Array.Sort(a); \\排序
for (int k = 0; k < 10; k++)
{
double b = a[k]; \\读出排在前10位的数
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
double c = Convert.ToDouble(GridView1.Rows[i].Cells[4].Text); \\查找每行的值
if (b == c) \\如果等于这个数的
{
GridView1.Rows[i].Cells[4].BackColor = System.Drawing.Color.Yellow;\\那一行变色。
}
}
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
double[] a = new double[GridView1.Rows.Count]; \\定义一个数组
for (int i = 0; i <= GridView1.Rows.Count -1; i++)
{
a[i] =Convert.ToDouble(GridView1.Rows[i].Cells[4].Text); \\把GridView1的某列的值赋值到这个数组
}
Array.Sort(a); \\排序
for (int k = 0; k < 10; k++)
{
double b = a[k]; \\读出排在前10位的数
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
double c = Convert.ToDouble(GridView1.Rows[i].Cells[4].Text); \\查找每行的值
if (b == c) \\如果等于这个数的
{
GridView1.Rows[i].Cells[4].BackColor = System.Drawing.Color.Yellow;\\那一行变色。
}
}
}
}
foreach (GridViewRow row in gvProduct.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
if (row.RowIndex <= 9)
{
row.BackColor = System.Drawing.Color.Yellow;
}
}
}你要按某列里面某个数字的最小的10个变色你取数据绑定前就可以按照这个先排序排好~然后在按上面的变色就可以了,我说的e.row.Attributes("事件", "this.style.backgroundColor = '颜色'")来改变~
是指你需要什么事件就可以加什么事件,例如鼠标经过行变色这种,我不知道你要什么效果
例如鼠标经过变色的效果 if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor; this.style.backgroundColor = '#33CCFF'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor = c");
}你看下吧,如果是你题目说的那种建议排好序在进行变色这样方便不用你后期出来那么多那么麻烦~
style="b...coloer:"<%# Eval("字段")>这个数?"":"red";%>;类似这样 代码写的不一定对。就是前台绑定的时候用一个三元运算符来判断 然后加载颜色。
我这种还有得在优化不,把GRIDVIEW的某列的数变成数组不知道有没有相关的方法,不用自己写循环。