สอบถามครับ คือ ผมได้ดึงข้อมูลมาแสดงในดาต้ากริด และใส่รูปภาพเข้าในกริดด้วย แต่ยังติดปัญหาเรื่องใส่เงื่อนไข โดยมีเงือนไขในคอลัมน์ Status เช่น ถ้า Status = Normal ในคอลัมน์ รูปภาพ ก็จะให้แสดงรูปที่ชื่อ imgNormal (ดึงมาจาก Resource)
หรือ Status = Fast ก็จะแสดงรูป imgFast ในคอลัมน์รูปภาพ
If dr.HasRows Then
dt = New DataTable()
dt.Load(dr)
dgvData.DataSource = dt
'Display image by Resource
Dim cbcImage As DataGridViewImageColumn
cbcImage = New DataGridViewImageColumn
With cbcImage
.Name = "ColImage"
.HeaderText = "รูปภาพ"
.Image = My.Resources.Resource.imgNormal 'imgNormal คือ ชื่อไฟล์รูปที่อยู่ใน Resorce
.Width = 55
.DisplayIndex = 7
End With
dgvData.Columns.Add(cbcImage)
Else
dgvData.DataSource = Nothing
End If
Code (VB.NET)
Private Sub fnShowAdvise()
Dim strConn As String
strConn = DBConnstring.strConn
Conn = New SqlConnection()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
Dim sqlStr As String
sqlStr = "SELECT tblAdvise.AID,tblAdvise.DateIn,tblAdvise.IAID,tblAdvise.Status,tblAdvise.Approve,tblAdvise.CodeID,"
sqlStr &= " tblItemAdvise.IAID,tblItemAdvise.Fullname"
sqlStr &= " FROM tblAdvise,tblItemAdvise"
sqlStr &= " WHERE (tblAdvise.IAID = tblItemAdvise.IAID)"
sqlStr &= " AND tblAdvise.CodeID='" & tmpCodeID & "'"
sqlStr &= " ORDER By tblAdvise.AID DESC"
Dim dr As SqlDataReader
Dim dt As DataTable
com = New SqlCommand()
With com
.CommandType = CommandType.Text
.CommandText = sqlStr
.Connection = Conn
dr = .ExecuteReader()
If dr.HasRows Then
dt = New DataTable()
dt.Load(dr)
dgvData.DataSource = dt
'Display image by Resource
Dim cbcImage As DataGridViewImageColumn
cbcImage = New DataGridViewImageColumn
With cbcImage
.Name = "ColImage"
.HeaderText = "รูปภาพ"
.Image = My.Resources.Resource.imgNormal 'imgNormal คือ ชื่อไฟล์รูปที่อยู่ใน Resorce
.Width = 55
.DisplayIndex = 7
End With
dgvData.Columns.Add(cbcImage)
Else
dgvData.DataSource = Nothing
End If
End With
Conn.Close()
fnFormatDataGridView()
End Sub
Tag : .NET, Ms SQL Server 2005, VBScript, Win (Windows App), VB.NET
Private Sub fnColm()
Dim imColumn As DataGridViewImageColumn = New DataGridViewImageColumn()
imColumn.Name = "StatusIcon"
'ตั้งชื่อ Column เป็น Status
imColumn.HeaderText = "สถานะ"
'ใส่ป้ายชื่อ Column เป็น สถานะ
'กำหนดให้มันอยู่ตรงกลาง
imColumn.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
imColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
'เพิ่ม Column ใหม่ต่อท้าย {dgvdata.ColumnCount = เป็น Index ของ Column ที่เราจะเพิ่มเข้าไปใหม่}
dgvData.Columns.Insert(dgvData.ColumnCount, imColumn)
setImagetoColumn()
End Sub
Private Sub setImagetoColumn()
Dim strConn As String
strConn = DBConnstring.strConn
Conn = New SqlConnection()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
Dim sql As String
sql = "SELECT Status FROM tblAdvise "
Dim da = New SqlDataAdapter(sql, Conn)
Dim ds = New DataSet()
da.Fill(ds, "Advise")
Dim imgNormal As Image
imgNormal = My.Resources.resHelp.imgNormal
Dim imgFast As Image
imgFast = My.Resources.resHelp.imgFast
Dim imgFastest As Image
imgFastest = My.Resources.resHelp.imgFastest
If ds.Tables(0).Rows.Count > 0 Then
Dim i As Integer
For i = 0 To ds.Tables(0).Rows.Count - 1
If CStr(dgvData.Rows(i).Cells("Status").Value) = "Normal" Then
dgvData.Rows(i).Cells("StatusIcon").Value = imgNormal
dgvData.Rows(i).Cells("StatusIcon").ToolTipText = "สถานะปรกติ"
ElseIf CStr(dgvData.Rows(i).Cells("Status").Value) = "Fast" Then
dgvData.Rows(i).Cells("StatusIcon").Value = imgFast
dgvData.Rows(i).Cells("StatusIcon").ToolTipText = "สถานะเร่งด่วน"
ElseIf CStr(dgvData.Rows(i).Cells("Status").Value) = "Fastest" Then
dgvData.Rows(i).Cells("StatusIcon").Value = imgFastest
dgvData.Rows(i).Cells("StatusIcon").ToolTipText = "สถานะเร่งด่วนที่สุด"
End If
Next
End If
Conn.Close()
End Sub