5.21 How can I have a column of icons in my datagrid?
http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q837q

解决方案 »

  1.   

    我想可以加一模板列,控件用image,绑定他的imageurl,就可以显示了
    我在webform中已经实现了,控件可以通用的,你可以试试
      

  2.   

    web中我也已经实现,但在winform中好你有点困难?
      

  3.   

    思归说的没错,这里必须写paint这里来完成绘图操作
    public class DataGridIconTextColumn : DataGridTextBoxColumn
    {
    private ImageList _icons;
    delegateGetIconIndexForRow _getIconIndex;//这个代理

    public DataGridIconTextColumn(ImageList Icons, delegateGetIconIndexForRow getIconIndex)
    {
    _icons = Icons;
    _getIconIndex = getIconIndex;
    } protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight)
    {
    try
    {
    Image icon1 = this._icons.Images[_getIconIndex(rowNum)];
    Rectangle rect = new Rectangle(bounds.X, bounds.Y, icon1.Size.Width, bounds.Height);
    g.FillRectangle(backBrush, rect);
    g.DrawImage(icon1, rect); bounds.X = bounds.X + rect.Width;
    bounds.Width = bounds.Width - rect.Width;
    base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
    }

    catch(Exception ex){ /* empty catch */ }
    }
    }
    }public delegate int delegateGetIconIndexForRow(int row);至于你们说的webform里通过模板来实现的,如果你们看看经过服务器处理
    以后的代码你们会明白模板转化后的html来实现的,原理是完全不同的两个
    概念!