我想把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;\\那一行变色。
                }
            }
        }
     }

解决方案 »

  1.   

    e.row.Attributes("事件", "this.style.backgroundColor = '颜色'")来改变~
      

  2.   

    为什么要在自己写排序,取数据的时候排序多好,或者把min取出来对比,相等的就加颜色。
      

  3.   

    e.row.Attributes.Add("事件", "this.style.backgroundColor = '颜色'")
      

  4.   


                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");
                }你看下吧,如果是你题目说的那种建议排好序在进行变色这样方便不用你后期出来那么多那么麻烦~
      

  5.   

    呵呵 说下我的思路在后台取出的时候 排序  取出最小的10个数最大的那个。。然后前台绑定的时候
    style="b...coloer:"<%# Eval("字段")>这个数?"":"red";%>;类似这样 代码写的不一定对。就是前台绑定的时候用一个三元运算符来判断 然后加载颜色。
      

  6.   

    我的代码错误找到原因了,改成GridView1_DataBound就可以了,你这个代码不带排序吧?我不懂你的写法,最好能给完整代码,看下你的是不是比我的更精简更高效。谢谢。
      

  7.   

    不自己排序怎么写?取MIN是取最小值吧,现在是取最小的N个值。
      

  8.   

    如有需要可留下邮箱给你发一个你要的那种DEMO
      

  9.   

    建议事先就排好序在绑定时就不用那么麻烦了~毕竟GridView只是用来显示的~逻辑操作能在绑定前全部搞定就最好了~没必要能提前买票的偏要等到上车后在去特地补票...~当然如果只是纯粹做练习那就无所谓了~
      

  10.   

    我是为了给他涂颜色啊,不同列涂的颜色都不同也,有的是最大的10个,有的是最小的10个,有的是大于某个数的,都要涂上颜色,你说的在绑定前就排好序,我没理解,发下例子给我看看,[email protected]
      

  11.   


    我这种还有得在优化不,把GRIDVIEW的某列的数变成数组不知道有没有相关的方法,不用自己写循环。