尝试在Telerik Gridview中设置图片时出现Null参考错误

时间:2012-08-04 05:37:35

标签: c# telerik telerik-grid radgridview

我正在尝试使用以下代码在telerik gridview中显示图片:

  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);
            }
        }

但每当我尝试运行该应用程序时,都会收到一条抱怨

的错误消息
  

对象引用未设置为对象的实例

它可能有什么问题?!

2 个答案:

答案 0 :(得分:1)

听起来你正在取消引用一个空对象(例如null.SomeProperty)。

您应该在收到错误的行上放置断点,并查看您要取消引用的null个对象。

答案 1 :(得分:0)

由于Radrik中的Telerik Virtualization(例如RadGridView CellElements和RowElements)可以为null。因此,为了格式化某些单元格,例如在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事件格式化某些行时,同样的方法也是有效的。