2012-08-04 57 views
0

我嘗試使用下面的代碼位,顯示在Telerik的gridview的圖片時,空引用錯誤:獲取試圖將圖片設置在GridView的Telerik的

foreach (var item in radGridView1.Rows) 
     { 
      try 
      { 
       item.Cells["column1"].CellElement.Text = ""; 
       item.Cells["column1"].CellElement.StretchVertically = true; 
       item.Cells["column1"].CellElement.ImageLayout = ImageLayout.Zoom; 
       item.Cells["column1"].CellElement.ImageAlignment = ContentAlignment.MiddleCenter; 
       item.Cells["column1"].CellElement.Image = Image.FromFile("img/1.jpg"); 
       pictureBox1.Image = Image.FromFile(item.Cells["Picture"].Value.ToString()); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

但每當我嘗試運行應用程序,我得到一個錯誤消息,抱怨

對象引用不設置到對象的實例

還有什麼可能錯它?!

+0

你能看到它來自哪條線嗎?也許你可以在'ex.StackTrace'中看到。例如,如果它位於'try'塊的第一行,請檢查以下所有內容:item == null,item.Cells == null,item.Cells [「column1」] = = null','item.Cells [「column1」] .CellElement == null'。 – 2012-08-04 06:54:37

回答

0

由於Telerik的虛擬化的控制,例如RadGridView CellElements和RowElements可以null.So爲了格式化例如以Telerik的RadGridView控制某些細胞,我們需要使用「CellFormatting」事件如下面:

private void radGridView1_CellFormatting(object sender, CellFormattingEventArgs e) 
     { 
      try 
      { 
       if (e.CellElement.ColumnInfo.HeaderText == "Picture") 
       { 
        e.CellElement.Image = pictureBox1.Image; 
       } 

      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
    } 

當然,對於使用RowFormatting事件格式化某些行也是一樣的方法。

1

聽起來就像你在解引用空對象(例如null.SomeProperty)。

您應該在出現錯誤的行上放置一個斷點,並查看您要解除引用的對象是哪個對象null

+0

我試過了。沒有任何行或單元格爲空。多數民衆贊成爲什麼我不解惑: -/ – Breeze 2012-08-04 05:43:16

+0

@霍塞因看到[這個](http://www.telerik.com/community/forums/winforms/gridview/update-cell-s-text-in-radgridview.aspx)。我不熟悉Telerik,但由於網格虛擬化,它看起來像'CellElement'可以是'null'。如果是這樣的話,那麼當你聲明'.CellElement.Text'時,你會解引用一個空對象,因爲CellElement爲空。 – 2012-08-04 05:50:34

+0

Ersonmez:是的你說得對。由於Telerik虛擬化,他們被設置爲null!我不得不使用CellFormatting_Event格式化某些單元格。 – Breeze 2012-08-04 08:33:41

相關問題