Base64从Xml到DataGridViewColumn的字符串作为图像列

时间:2013-12-29 10:04:22

标签: c# xml datagridview

DataSet绑定到DataGridView.DataSource工作正常。通过这个

DataSet ds = new DataSet();
ds.ReadXml(xmlFilePath);

dataGrid.DataSource = ds;
dataGrid.DataMember = "Teacher";

XML

<Teachers>
<Teacher>
    <FullName>AAAAAA</FullName>
    <Gender>Male</Gender>
    .
    .
    .
    . More than 15 Columns
    .
    <Photo> --- Base64 string--- </Photo>
</Teacher>
<Teacher>
.
.
.
</Teacher>
</Teachers>

但是如何将元素的Base64字符串转换为DataGridView中的图像列。 Photo列按原样显示。 (BASE64字符串)。

- 后 -

我试过了。

private void dg_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (dg.Columns[e.ColumnIndex].Name == "Photo" && !dg.Rows[e.RowIndex].IsNewRow)
    {
        if (!string.IsNullOrEmpty(e.Value + ""))
        {
            e.Value = Base64ToImage(e.Value + "");
        }
    }
}

但是输出是这样的......

DataGrid Output

1 个答案:

答案 0 :(得分:0)

您需要将datagrids的autogeneratecolumns属性设置为false。然后在Datagrid的Columns属性中,在设计视图中自己生成列。确保将包含Image的列设置为DataGridViewImageColumn。

在设计视图中创建它们时,不要忘记在列上设置DataPropertyName。这将允许DataGridView从数据源中知道它应该加载什么。

这应该与你上面已经完成的工作一起工作。

有关详细信息,请查看此链接how to bind datatable to datagridview in c sharp