我DataGridView
绑定了我的一个绑定适配器。我的网格中有一个对应于"type"
附件的列(即“.pdf”)。这在网格视图列中显示为文本(如预期的那样)。我希望能够将列的值更改为表示类型的图像。例如,如果类型是 a PDF
,我希望列中有PDF
文档的图像而不是 text ".pdf"
。
有没有办法在添加单元格时动态地做到这一点?还是希望在所有单元格都加载后完成?
干杯。
是的,只需使用一个图像,并有一些具有相应名称的图标。
例如 pdf.png、word.png
然后像这样构建链接:
<img src="<%# LinkRoot + Eval("type").ToString() + ".png" %>" height="32" width="32" />
柱子上的图片要type
自己绘制,当然绘制出来的图片是对应的text
(描述文件类型,如:,,,.pdf
... .txt
)。您必须自己准备所有图像,如果没有与未知文件类型对应的图像,您可以使用Unknown file type image
. 要在单元格上绘制图像,您必须处理事件CellPainting
,这是您可以尝试的代码:
//Dictionary to store the pairs of `text` and the corresponding image
Dictionary<string, Image> dict = new Dictionary<string, Image>(StringComparer.CurrentCultureIgnoreCase);
//load data for your dict
dict["Unknown"] = yourUnknownImage;//This should always be added
dict[".pdf"] = yourPdfImage;
dict[".txt"] = yourTxtImage;
//.....
//CellPainting event handler for your dataGridView1
//Suppose the column at index 1 is the type column.
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e){
if(e.ColumnIndex == 1 && e.RowIndex > -1){
var image = dict["Unknown"];
if(e.Value != null) {
Image img;
if(dict.TryGetValue(e.Value.ToString(), out img)) image = img;
}
//Draw the image
e.Graphics.DrawImage(image, new Rectangle(2,2, e.Bounds.Height-4, e.Bounds.Height-4));
}
}