2011-10-04 86 views
0

上周我开始尝试使用Winforms自动化一些报表。我不喜欢过渡(对你们中的一些人来说可能很简单)!访问GridView中的单元格

我目前正在显示使用Oracle SQL Developer创建的SQL视图中的数据。我通过使用DataGridView任务来选择表格并显示它(这似乎是最直接的方法),以加强数据。

所有的数据都显示正常。但是,我现在想访问表格中的单元格。我希望能够根据它们的值改变单元格的颜色,并在需要时提取一些数据。

要访问数据,并强调我希望做这样的事情

protected void MyGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     int theValue = Convert.ToInt32(e.Row.Cells[0].Text); 

      if (theValue>0) 
       e.Row.Cells[0].BackColor = System.Drawing.Color.Red 
    } 
} 

因为事件在不触发它不工作行。我想我应该将数据绑定到我的gridview,但我已经通过设计器加载了所有的数据。这是问题吗?我不知道如何自己编写代码,我之前尝试过,但它扔了一个摇摆。

此外,当我尝试通过设计器更改数据库的SQL查询时,它不起作用。我想我会以这样的速度失去理智!

回答

1

您需要使用CellFormatting事件上的DataGridView像这样

private void MyGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
     { 
      if ((int)MyGridView.Rows[e.RowIndex].Cells[0].Value > 30) 
      { 
       e.CellStyle.BackColor = System.Drawing.Color.Red; 
       e.CellStyle.ForeColor = System.Drawing.Color.White; 
      } 
     } 
+0

谢谢您的答复。 'MyGridView'上的'int'不起作用,所以我将该部分改为:'string val = DataGridViewPhantom_1.Rows [e.RowIndex] .Cells [i] .Value.ToString(); int numVal = Convert.ToInt32(val); if(numVal == 0){// do something}' –

+0

演员为我工作,但嘿。谢谢 – zybroxz

+0

那么你让我的答案,所以我非常感谢!谢谢! :) –