【发布时间】:2019-09-20 11:21:56
【问题描述】:
enter image description here如何使用存储过程在Gridview中渲染图像?
目前在 gridview 中显示的是图像或文件夹的路径(位置),但我需要渲染图像本身 - 第一列必须成为图像列。这适用于使用 C# 的 Windows 窗体。感谢您的帮助。
image showing image paths instead of actual images
void FillDataGridView_Main()
{
if (sqlCon.State == ConnectionState.Closed)
sqlCon.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter("[sp_selectTop10CycleTime]", sqlCon);
sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure;
sqlDA.SelectCommand.Parameters.AddWithValue("@date", DateTime.Now.ToShortDateString());
DataTable dataTbl = new DataTable();
sqlDA.Fill(dataTbl);
dgvNextCycleTime.DataSource = dataTbl;
sqlCon.Close();
}
现在使用下面给定的代码 :) 但是在使用计时器每1秒更新一次void FillDataGirdView_Main()时遇到另一个错误
void FillDataGridView_Main()
{
if (sqlCon.State == ConnectionState.Closed)
sqlCon.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter("[sp_selectTop10CycleTime]", sqlCon);
sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure;
sqlDA.SelectCommand.Parameters.AddWithValue("@date", DateTime.Now.ToShortDateString());
DataTable dataTbl = new DataTable();
sqlDA.Fill(dataTbl);
dgvNextCycleTime.DataSource = dataTbl;
sqlCon.Close();
int ImagePathIndex = 0; // assuming that the image path column is 0 (See in your case)
dgvNextCycleTime.Columns[ImagePathIndex].Visible = false; // Make visibility for the path = false
DataGridViewImageColumn ImageColunm = new DataGridViewImageColumn();
ImageColunm.HeaderText = "Image";
ImageColunm.Name = "ImageName";
ImageColunm.ImageLayout = DataGridViewImageCellLayout.Normal;
ImageColunm.Image = null;
dgvNextCycleTime.Columns.Insert(1, ImageColunm); // Add the new colunm to the grid
// Add the image to the new column in the grid
foreach (DataGridViewRow row in dgvNextCycleTime.Rows)
{
Image img = Image.FromFile(row.Cells[ImagePathIndex].Value.ToString());
DataGridViewImageCell cell = row.Cells["ImageName"] as DataGridViewImageCell;
cell.Value = img;
}
【问题讨论】:
标签: c# sql-server winforms stored-procedures