2011-10-04 56 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

那麼你讓我的答案,所以我非常感謝!謝謝! :) –