datagridview里要有一个链接形式的列,绑定后显示为"已完成"或"未完成"
根据这个要把link列的颜色显示为不同的颜色,
以前很少做winform的东西,不知道要怎么做,经理要的就是web的那种感觉。

解决方案 »

  1.   

    国庆后第一天上班,都没人来CSDN了啊。
      

  2.   

    for(int i=0;i< dt.Rows.Count;i++)
                {
                    
                    if (this.DataGridView.Rows[i].Cells["Column6"].Value.ToString().Equals("未完成"))
                    {
                        this.DataGridView.Rows[i].Cells["Column6"].Style.ForeColor = Color.Red;
                    }            }
      

  3.   

    或者可以在DataGridView_RowPostPaint事件里绘制:
            private void DataGridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
             {
                 try
                 {
                     if (e != null)
                     {
                         for (int i = 0; i < GetTable().Rows.Count; i++)
                         {
                             if (this.DataGridView.Rows[i].Cells["Column6"].Value.ToString().Equals("未完成"))
                             {                             DataGridView.Rows[i].Cells["Column6"].Style.ForeColor = Color.Red;                         }
                         }
                     }
                 }
                 catch
                 {
     
                 }        }
      

  4.   

    RowPostPaint事件是不需要再循环了的,他本身就是对datagridview每行的重绘
      

  5.   

     DataGridViewLinkCell state = dgvReport.Rows[e.RowIndex].Cells[5] as DataGridViewLinkCell;
                if (state.Value.Equals("未完成"))
                {
                    state.LinkColor = Color.Black;
                    state.ActiveLinkColor = Color.Black;
                    state.LinkBehavior = LinkBehavior.NeverUnderline;
                }
      

  6.   

    在绑定内容中判断
    <%if(Eval("XX").ToString()=="未完成"  
       {%>
      <.... >    <!--在这里给控件设置属性 -->
    <% }else{ %>
      <......>
    <% } %>
      

  7.   

    RowPostPaint那个事件是不需要循环的,因为他本身就是一个循环
    如果winform程序上了一两万条数据,循环也会卡吧。