比如说第一条记录,字段 c 值是 red  ,那这条记录的文本色就是红
第二条 字段 c 的值 是 black ,那这条记录的文本色就是黑
不能用 Repeater ,因为每条记录的前面都有 checkbox 
还要用到这个checkbox请问如何实现啊!!!急!!谢谢了!!!~~!!!!!

解决方案 »

  1.   

    dim datasource as datatable '数据源Private Sub dgdItems_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgdItems.ItemDataBound
            If e.Item.ItemType <> ListItemType.Header _
              And e.Item.ItemType <> ListItemType.Footer Then
               select case datasource.Rows(e.item.itemIndex)("字段")    
                     case "red"
                           e.Item.BackColor=color.red
                     case "black"
                              e.Item.BackColor=color.black
                end select    
     End If
     End Sub
      

  2.   

    参考一下:
    public class DataGridColoredTextBoxColumn : DataGridTextBoxColumn 
      { 
     
        protected override void Paint(System.Drawing.Graphics g, 
        System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager 
         source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush
         foreBrush, bool alignToRight) 
            { 
     
                   try{ 
     
                        object o = this.GetColumnValueAtRow(source, rowNum); 
                        if( o!= null) 
                        { 
                             char c = ((string)o)[0]; 
                             if( c > 'F') 
                             { 
                                  backBrush = new LinearGradientBrush(bounds, 
                                       Color.FromArgb(255, 200, 200), 
                                      Color.FromArgb(128, 20, 20), 
                                       LinearGradientMode.BackwardDiagonal); 
                                  foreBrush = new SolidBrush(Color.White); 
                             } 
                        } 
                   } 
                    catch(Exception ex){ /* empty catch */ } 
                   finally{                 
                        base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);  
                   } 
     
              } 
     
         }