你不妨在数据库中加一列color,根据该列值显示每一行的颜色

解决方案 »

  1.   

    private void DataGrid1_ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))//不对表头起作用
    {if(e.Item.Cells[姓名列的序号].Text=="张三") { e.Item.BackColor=System.Drawing.Color.red;}
    //其它参见这个,
    }
    }
      

  2.   

    to :sn790519(海) 查询结果名字不固定,你说的办法恐怕不行!
      

  3.   

    首先问一句:有必要怎么做吗?呵呵。如果实在需要,可以这样:在数据库中新建一张表tblColor,一个字段ColorType保存所有的颜色种类,比如:“red”、“blue”等等;另一个字段ID为整形,作为主键。还是在ItemDataBound事件中绑定,先返回DataGrid当前行的人名对应的Cells的Text,并写到一个ArrayList中;然后从tblColor返回min(ID),然后记住ID值(并且要和当前人名对应起来;下一次的时候,先到Arraylist中查找,看是不是在Arraylist中已存在的名字:如果是,那么找到该名字对应的ID,到数据库中查得其ColorType字段值,赋给当前行的BackColor;如果在ArrayList中不存在,则把该名字添加到ArrayList,并把当前ID值与这个名字对应,再返回比当前ID大的最小的ID值所对应的ColorType值,赋给当前行的BackColor,并且修改ID值。如此这般做下去不过,虽然能够达到你要的效果,显示出来的话肯定惨不忍睹,因为能控制每个名字对应不同的颜色,但是各种颜色放到一块,肯定不符合美学的要求,除非进行更严格的控制。所以,再问一句:有必要吗?
      

  4.   

    to: Edison621(柏拉图的永恒) 我的意思,你理解错了
    比如:
    姓名         科目         成绩
       张三          语文          80      //白色
       张三          数学          70      //白色
       李四          语文           80     //红色
       李四          英语          78       //红色
       王二          体育          100      //白色
       赵五          物理          30       //红色查询结果也不固定
      

  5.   

    DataGrid1_ItemCreated(){}里面设置相关属性,完全可以解决问题的