各位高手,我现在编写的ASP.NET项目需要用到DataGrid来显示数据,但是现在遇到一些问题,如何能够在每行的前面根据不同的数据显示相对应的图标或者图片呢?
如果不行的话,有没有什么值得推荐的第三方控件或者一些方法呢,我用的是VB,期待中.....

解决方案 »

  1.   

    添加一个模版列
    <asp:TemplateColumn>
    <ItemTemplate>
    <img src="../images/ni_tzgg.gif" border="0">
    </ItemTemplate>
    </asp:TemplateColumn>
      

  2.   

    如果还需要根据数据显示不同的图片,那么可以在模版列放入Image控件,在DG的ItemBound方法里面去findControl它,然后根据数据给它写入不同的ImageUrl
      

  3.   

    加一个模版列
    就像楼上说的
    img的src可以通过绑定<asp:TemplateColumn>
    <ItemTemplate>
    <img src='<%# DataBinder...%>' border="0">
    </ItemTemplate>
    </asp:TemplateColumn>
    跟绑定别的字段一样
      

  4.   

    前台代码:
    <ItemTemplate> <asp:Label runat="server"
         Text='<%# GetImageUrl(DataBinder.Eval(Container,                           "DataItem.Index"))%>'> </asp:Label> </ItemTemplate>
    后台代码:
    protected string GetImageUrl(object Index)
    {
       if(Index).ToString()=="1")
    {
    return "<img src='Red.gif'>";
    }
    else if(Index).ToString()=="2")
    {
    return "<img src='yellow.gif'>";
    }
    else if(Index).ToString()=="3")
    {
    return "<img src='green.gif'>";
    }
    }
      

  5.   

    在前台datagrid中的某列中加
    <asp:Label id="Label1" runat="server"></asp:Label>后台DataGrid1_ItemDataBound中
    object grade = DataBinder.Eval(e.Item.DataItem,"grade");
    StringBuilder sb=new StringBuilder();
    if (grade.ToString()=="2")
    {
    sb.Append("<img src=\"../images/information/silver.gif\" width=\"12\" height=\"12\" hspace=\"2\">");
    }
    else if(grade.ToString()=="3")
    {
    sb.Append("<img src=\"../images/information/gold.gif\" width=\"12\" height=\"12\" hspace=\"2\">");
    }
    Label LblGrade = (Label)e.Item.FindControl("Label1");
    LblGrade.Text=sb.ToString();
      

  6.   

    DataGrid的功能很多的,如果用好了,完全可以实现的,模板列可以解决问题