C# 尝试在Telerik Gridview中设置图片时出现空引用错误
我尝试使用以下代码在telerik gridview中显示图片:C# 尝试在Telerik Gridview中设置图片时出现空引用错误,c#,telerik,telerik-grid,radgridview,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
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);
}
}
但每当我尝试运行应用程序时,都会收到一条错误消息,抱怨
对象引用未设置为对象的实例
它可能有什么问题 听起来像是在解除对空对象的引用(例如
null.SomeProperty
)
您应该在收到错误的行上放置一个断点,并查看您正在取消引用的
null
对象。由于控件中的Telerik虚拟化,例如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事件格式化某些行。我试过了。没有任何行或单元格是空的。这就是为什么我感到困惑的原因:-/@Hossein-see。我不熟悉Telerik,但由于网格虚拟化,
CellElement
看起来可以是null
。如果是这样,你应该是空的当你说.CellElement.Text
时取消对空对象的引用,因为CellElement是空的。Ersonmez:是的,你是对的。由于Telerik虚拟化,它们被设置为空的!我不得不使用CellFormatting\u事件格式化某些单元格。你能看到它来自哪一行吗?也许你可以在ex.StackTrace
中看到它。例如,如果t位于try
块的第一行,请检查以下所有内容:item==null
,item.Cells==null
,item.Cells[“column1”]==null
,item.Cells[“column1”]。CellElement==null
。