0

DataGridView绑定了我的一个绑定适配器。我的网格中有一个对应于"type"附件的列(即“.pdf”)。这在网格视图列中显示为文本(如预期的那样)。我希望能够将列的值更改为表示类型的图像。例如,如果类型是 a PDF,我希望列中有PDF文档的图像而不是 text ".pdf"

有没有办法在添加单元格时动态地做到这一点?还是希望在所有单元格都加载后完成?

干杯。

4

2 回答 2

0

是的,只需使用一个图像,并有一些具有相应名称的图标。

例如 pdf.png、word.png

然后像这样构建链接:

<img src="<%# LinkRoot + Eval("type").ToString() + ".png" %>" height="32" width="32" />
于 2013-09-06T12:25:01.720 回答
0

柱子上的图片要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));
   }
}
于 2013-09-06T13:37:56.893 回答