我有一个Datagridview
数据库中的数据填充。
我的数据库表上有3列:id, name, status.
但是这些都是文本/字符串格式的。
根据我从数据库的“状态”列(“联机”或“脱机”)获得的数据,我尝试将图像放置在单元上,而不仅仅是普通的“联机”或“脱机”字符串。
我很喜欢DGV
这次DataBindingComplete
活动。当前具有以下代码:
void DataGridView1DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
foreach (DataGridViewRow r in dataGridView1.Rows)
{
if (r.Cells["status"].Value.ToString() == "Online")
{
// add online image here
r.Cells["status"].Value = Resource1.MyOnlineIcon;
}
else if(r.Cells["status"].Value.ToString() == "Offline")
{
// add offline image here
r.Cells["status"].Value = Resource1.MyOfflineIcon;
}
}
但是问题在于它显示System.Drawing.Bitmap
在单元格上,而不是实际显示图片。由于在我的数据库中,状态列的数据类型是字符串,因此DGV也将列设置为字符串类型。如何将现有的字符串/文本类型列更改为图像列?解决此问题的最佳方法是什么?
如果您将数据库查询转换为这样的对象集合
public class SomeObject {
public int ID {get;set;}
public string Name {get;set;}
public Bitmap Image {get;set;
public SomeObject(int id, string name, string status) {
ID = id;
Name = name;
Image = status == "Online" ? Resource1.MyOnlineIcon : Resource1.MyOfflineIcon;
}
}
通过将其绑定到,它应该可以正常工作DataGridView
:
List<SomeObject> source = dbConnection.GetObjects();
dataGridView.DataSource = source;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句