将图像放入DataTable中,并将表设置为gridview的数据源

本文关键字:设置 gridview 数据源 图像 DataTable | 更新日期: 2023-09-27 18:20:49

我在将图像放在DataTable中并将该表设置为gridview的数据源时遇到了问题,我到处都找过了,但没有。我运气不好。问题是:

    private void populateGrid()
    {
       // Gets a datatable from a stored procedure
        DataTable ragTable = ProjetoBO.HistoricoRAGStatusProjeto(Convert.ToInt32(Session["idProjeto"]));
        int group= -1;
        int cont = 1;
        var table = GetDataTable(ragTable);
        DataRow dataRow = table.NewRow();
        foreach (DataRow row in ragTable.Rows)
        {
            cont++;
            if (Convert.ToInt32(row[9]) != group)
            {
                cont = 1;
                group= Convert.ToInt32(row[9]);
                table.Rows.Add(dataRow);
                dataRow = tabelaFinal.NewRow();
            }
            dataRow[0] = DateTime.Parse(row[2].ToString()).ToShortDateString();
            //putting some random image just for testing purpose
            dataRow[cont] = Properties.Resources.myIcon;
        }
        //my grid
        histRagStatus.DataSource = table ;
        histRagStatus.DataBind();
    }
    //Creates a dataTable with the columns I need
    private DataTable GetDataTable(DataTable ragTable)
    {
        var newTable= new DataTable();
        newTable.Columns.Add("Date");
        foreach (DataRow row in ragTable.Rows)
        {
            if (!newTable.Columns.Cast<DataColumn>().Any(column => column.ColumnName.Equals(row[6].ToString())))
            {
                var newColumn= new DataColumn(row[6].ToString());
                newTable.Columns.Add(newColumn);
            }
        }
        return newTable;
    }

我一直在尽我所能,创建一个新列,比如var newColumn=new DataColumn(row[6].ToString(),typeof(Bitmap));/正在转换为图像并在添加到DataTable之前放置/更改列的数据类型。。。但是运气不好。。。我只需要正确的方法从Properties.Resources中获取图像,并将其放在DataTable上,它将绑定到网格,图像将显示在gridview上。。。

现在任何帮助对我来说都是宝贵的=D

将图像放入DataTable中,并将表设置为gridview的数据源

我不知道在GridView中本地渲染图像文件(包括BMP)的方法。

在您的情况下,我要做的是将位图保存在虚拟目录中的本地文件中。一旦有了文件名,就可以将该文件名绑定到GridView中的ImageField列。

在DataTable中存储二进制位图仅适用于带有DataGridView控件的Windows窗体。在ASP.NET DataGrid中,必须引用图像URL。简单的方法是在DataGrid中启用事件行DataBound。

然后将代码连接到您的图像位置。

protected void GridView1_RowDataBound(object sender, GridViewRowWEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        //Setup in your image column index. By Example setting 0
        e.Row.Cells[0].Text=Server.HtmlDecode(@"<img src=""./Images/pdf.gif"" />");
    }
}