2015-06-12 14 views
1

我正在處理一個應用程序,其中5個圖像保存在數據庫中的單個id上。現在我想在調用這些圖像的時候在datagrigview中檢索這些圖像。我的下面的代碼與picturebox一起工作良好,但是我希望在SQl服務器數據庫的datagridview中包含多個包含相同pincode的圖像。如何使用C#從SQL數據庫中的DataGridView中插入圖像

try 
{ 
    string sql = "Select IMAGE from UserInput where PINCODE = '" + txt_LPin.Text + "'"; 
    if (conn.State != ConnectionState.Open) 
     conn.Open(); 
    cmd = new SqlCommand(sql, conn); 
    SqlDataReader reader = cmd.ExecuteReader(); 
    reader.Read(); 
    if (reader.HasRows) 
    { 
     //txt_LName.Text = reader[0].ToString(); 
     byte[] img = (byte[])(reader[1]); 

     if (img == null) 
      pb_get1.Image = null; 
     else 
     { 
      MemoryStream ms = new MemoryStream(img); 

      pb_get1.Image = Image.FromStream(ms); 
     } 
    } 
    else 
    { 
     txt_LPin.Text = ""; 
     txt_LName.Text = ""; 
     pb_get1.Image = null; 
     MessageBox.Show("This ID does not exist."); 
    } 
    conn.Close(); 
} 
catch (Exception ex) 
{ 
    conn.Close(); 
    MessageBox.Show(ex.Message); 
} 

我曾嘗試下面的代碼的dataGridView但它顯示的圖像對地方形象的十字標記這一翻譯。

SqlDataAdapter adpat = new SqlDataAdapter(); 
adpat.SelectCommand = new SqlCommand("select IMAGE from UserInput", conn); 
DataTable table = new DataTable("UserInput"); 
adpat.Fill(table); 
//create image column: 
DataGridViewImageColumn photoColumn = new DataGridViewImageColumn(); 
photoColumn.DataPropertyName = "Picture"; 
photoColumn.Width = 200; 
photoColumn.HeaderText = "Picture column"; 
photoColumn.ReadOnly = true; 
photoColumn.ImageLayout = DataGridViewImageCellLayout.Normal; 
dataGridView1.Columns.Add(photoColumn); 
//bind data to dgv: 
dataGridView1.DataSource = new BindingSource(table, null); 
+0

任何網格加載代碼你寫了? – andy

+0

我編輯了這個問題的代碼嘗試datagridview。 – Sumi

回答

1

插入在GridView的圖像,你可以使用:

1)我們需要的數據源:

dataGridView1.DataSource = datasouce;

2)通過創建寫入圖像列;

DataGridViewImageColumn img = new DataGridViewImageColumn(); 
img.Name = "img"; 
img.HeaderText = "Image Column"; 
img.ValuesAreIcons = true; 
dataGridView1.Columns.Add(img); 

3)和最後

int number_of_rows = dataGridView1.RowCount; 
for (int i = 0; i < number_of_rows; i++) 
{ 
if (dataGridView1.Rows[i].Cells[6].Value.ToString() == "true") 
{ 
Icon image = Properties.Resources.succcess_icon; 
dataGridView1.Rows[i].Cells["img"].Value = image; 
} 
else 
{ 
Icon image =Properties.Resources.cancel_icon; 
dataGridView1.Rows[i].Cells["img"].Value = image; 
} 
} 
+0

但是數據庫的參考在哪裏? – Sumi

+0

您可以將數據集(或任何其他數據源)與gridview綁定。 – v2v2

0

問題是由下面的行代碼的解決;

 conn.Open(); 
     SqlDataAdapter sda = new SqlDataAdapter("Select Image,Name from UserInput where PINCODE = '" + txt_LPin.Text + "'",conn); 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 
     dataGridView1.DataSource = dt; 
     conn.Close(); 
相關問題