本帖最后由 Foris 于 2010-09-06 20:36:32 编辑

解决方案 »

  1.   

    10列 索引从0-9
    <%# Eval("qtfy").ToString("1200")?"<font color= \"red\">" + Eval("")+ "</font >":""%>   
      

  2.   

    你最好
    myrows["字段名字"].ToString()
    这种方法取数据myrows[9]是数据源的字段数,不是GridView的列数当使用模板列时,应该使用e.Row.FindControl查找,而不是e.Row.Cells[i].
      

  3.   


    找到问题了,正确代码如下:前端还是使用模板列,不用定义指定ID的Label:
    <asp:TemplateField HeaderText="其它费用">   
      <ItemTemplate>
      <%# Eval("qtfy")%>   
      </ItemTemplate>   
      <ItemStyle Width="150px" />
    </asp:TemplateField>后端GridView1_RowDataBound处理代码:
     
     if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType==DataControlRowType.EmptyDataRow)
    {       
        DataRowView myrows = (DataRowView)e.Row.DataItem;            
        if (myrows["stop"].ToString().Equals("0"))
        {
           for (int i = 0; i < 14; i++)                    
             e.Row.Cells[i].ForeColor = System.Drawing.Color.Red;
        }
    }
    结论:
    使用模板列时,(DataRowView)e.Row.DataItem["数据库列名"].ToString()可以获取到GridView的值。e.Row.Cells[i].Text获取不到值,但e.Row.Cells[i].Text可以被赋值,前端GridView样式也可以通过设置e.Row.Cells[i]改变GridView
      

  4.   

     #4楼 得分:0回复于:2010-09-06 20:54:42
    找到问题了,正确代码如下:前端还是使用模板列,不用定义指定ID的Label:
    <asp:TemplateField HeaderText="其它费用">   
      <ItemTemplate>
      <%# Eval("qtfy")%>   
      </ItemTemplate>   
      <ItemStyle Width="150px" />
    </asp:TemplateField>后端GridView1_RowDataBound处理代码:
      
     if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType==DataControlRowType.EmptyDataRow)
    {   
      DataRowView myrows = (DataRowView)e.Row.DataItem;   
      if (myrows["stop"].ToString().Equals("0"))//'stop'是数据库列名,'0'也是数据库中改列的值  {
      for (int i = 0; i < 14; i++)   
      e.Row.Cells[i].ForeColor = System.Drawing.Color.Red;
      }
    }
    结论:
    使用模板列时,(DataRowView)e.Row.DataItem["数据库列名"].ToString()可以获取到GridView的值。e.Row.Cells[i].Text获取不到值,但e.Row.Cells[i].Text可以被赋值,前端GridView样式也可以通过设置e.Row.Cells[i]改变GridView