本文介绍了在DataGridViewImageColumn中渲染图像时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
你好, 我正在开发一个窗口应用程序。 在中呈现图像时DataGridViewImageColumn ,只有第一张图片显示在所有行中。这是我的代码...
Hello, I am developing a window application. At the time of rendering images in DataGridViewImageColumn , only first image is showing in all rows.This is my code...
private void BindGrid() { DataSet ds = objStaff.GetStaff(1); if (ds != null) { grdDetail.DataSource = ds.Tables[0]; grdDetail.Columns["StaffId"].Visible = false; grdDetail.Columns["Image"].Visible = false; DataGridViewImageColumn img = new DataGridViewImageColumn(); //int number_of_rows = grdDetail.RowCount; for (int i = 0; i < grdDetail.Rows.Count; i++) { img.HeaderText = "Image"; img.Width = 80; string imagePath = ds.Tables[0].Rows[i][1].ToString(); Image image = Image.FromFile(imagePath); img.Image = image; //grdDetail.Rows[i].Cells["Picture"].Value = image; grdDetail.Columns.Add(img); } grdDetail.Refresh(); } }我该怎么办?请帮忙。
What should I do? Please help.
推荐答案你可以:(它对我有用) 1.在数据集表中添加一个字节列 2.在字节列中添加图像 3.然后用数据绑定数据表 如下 You Can : (its works for me) 1. add a byte column to table of dataset 2. Add image in byte column 3. then bind data table with grid as follows private void BindGrid() { DataSet ds = objStaff.GetStaff(1); if (ds != null) { DataTable dtable = new DataTable(); DataColumn dcol = new DataColumn("myImage"); dtable = ds.Tables[0].Copy; dcol.AllowDBNull = true; dcol.DataType = System.Type.GetType("System.Byte[]"); dcol.Caption = "myImage"; dtable.Columns.Add(dcol); foreach (DataRow drow in dtable.Rows) { string imagePath = drow[1].ToString(); Image image = Image.FromFile(imagePath); System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); // your image format here drow["myImage"] = ms.ToArray(); } grdDetail.DataSource = dtable; grdDetail.Columns["StaffId"].Visible = false; grdDetail.Columns["Image"].Visible = false; } }
更多推荐
在DataGridViewImageColumn中渲染图像时出现问题
发布评论