Hướng dẫn chèn hình ảnh vào gridcontrol sử dụng VB.NET

Xem: 440    Tải: 0   Thảo luận: 0   Mục: Visual studio & .NET   Lĩnh vực: Khác

9 điểm   ( 3 đánh giá ) File đã được kiểm thử

Với Gridview mặc định của Winform thì chúng ta có thể chèn hình ảnh từ đường dẫn vào. Nhưng trong GridControl của Devexpress, nếu chúng ta muốn chèn hình ảnh vào GridControl, thì mặc định nó hỗ trợ đọc hình ảnh dưới dạng Base64, nếu hình ảnh được lưu vào database thì sẽ đọc được bình thường. Nhưng nếu hình ảnh mà lưu vào database thì sai quy tắc cơ bản của thiết kế dữ liệu, vì nếu lưu hình ảnh xuống database thì làm cho dung lượng dữ liệu của mình phình to và xử lý nặng nề hơn. Vì thế, hôm nay mình xin hướng dẫn các bạn chèn hình ảnh vào GridControl từ đường dẫn hình ảnh được lưu trên ổ đĩa. 

- Để đọc được hình ảnh vào grid control chúng ta, cần tạo thêm ba file class sau để xử lý link hình ảnh: 

- Đầu tiên tạo database Student với  table test:

USE [Student]
GO
 
/****** Object:  Table [dbo].[test]    Script Date: 12/19/2015 08:41:15 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
CREATE TABLE [dbo].[test](
    [masv] [nvarchar](50) NOT NULL,
    [tensv] [nvarchar](50) NULL,
    [hinhanh] [nvarchar](350) NULL,
 CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED 
(
    [masv] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
 
GO

1. GraphicsEdit.vb

Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports GraphicsEditor.GraphicsEditor
Imports System.Data.SqlClient
Namespace CsWinFormsBlackApp
    Partial Public Class Form1
        Inherits DevExpress.XtraEditors.XtraForm
 
        Public Sub New()
            InitializeComponent()
        End Sub
        Dim con As New SqlConnection
        Public Sub Taoketnoi()
            Dim str As String = "Data Source=.;Initial Catalog=Student;Integrated Security=True"
            con.ConnectionString = str
            con.Open()
        End Sub
        Public Function LayDulieu() As DataTable
 
            Dim dt As New DataTable
            Dim da As New SqlDataAdapter
            da.SelectCommand = New SqlCommand("select masv as [Mã sinh viên], tensv as [Tên sinh viên], hinhanh as [Hình ảnh] from test", con)
            da.Fill(dt)
            Return dt
        End Function
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Taoketnoi()
            Dim dt As New DataTable
            dt = LayDulieu()
            GridControl1.DataSource = dt
            Dim repItemGraphicsEdit As New RepositoryItemGraphicsEdit()
            repItemGraphicsEdit.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Squeeze
            repItemGraphicsEdit.BestFitWidth = 100
            GridView1.Columns("Hình ảnh").ColumnEdit = repItemGraphicsEdit
        End Sub
        
    End Class
End Namespace

2. GraphicsEditViewInfo.vb

Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Drawing
Imports DevExpress.XtraEditors.ViewInfo
Imports DevExpress.XtraEditors.Repository
 
Namespace GraphicsEditor
    Class GraphicsEditViewInfo
        Inherits PictureEditViewInfo
        Public Sub New(item As RepositoryItem)
            MyBase.New(item)
        End Sub
 
        Public Overrides Property EditValue() As Object
            Get
                Return MyBase.EditValue
            End Get
            Set(value As Object)
                If value IsNot Nothing AndAlso value.[GetType]() = GetType(System.String) Then
                    Try
                        MyBase.EditValue = New Bitmap(value.ToString())
                    Catch
                        MyBase.EditValue = Item.ErrorImage
                    End Try
                Else
                    MyBase.EditValue = value
                End If
            End Set
        End Property
    End Class
End Namespace

3. RepositoryItemGraphicsEdit.vb

Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports DevExpress.XtraEditors
Imports DevExpress.XtraEditors.Repository
Imports DevExpress.XtraEditors.Registrator
Imports DevExpress.XtraEditors.ViewInfo
Imports DevExpress.XtraEditors.Drawing
 
Namespace GraphicsEditor
    'The attribute that points to the registration method 
     _
    Class RepositoryItemGraphicsEdit
        Inherits RepositoryItemPictureEdit
        ' Static constructor should call registration method
        Shared Sub New()
            RegisterGraphicsEditor()
        End Sub
 
        Public Const GraphicsEditorName As String = "GraphicsEdit"
        Public Overrides ReadOnly Property EditorTypeName() As String
            Get
                Return GraphicsEditorName
            End Get
        End Property
 
        Public Shared Sub RegisterGraphicsEditor()
            EditorRegistrationInfo.[Default].Editors.Add(New EditorClassInfo(GraphicsEditorName, GetType(GraphicsEdit), GetType(RepositoryItemGraphicsEdit), GetType(GraphicsEditViewInfo), New PictureEditPainter(), True))
        End Sub
    End Class
End Namespace

- Và cuối cùng là file chính của form1:

Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports GraphicsEditor.GraphicsEditor
Imports System.Data.SqlClient
Namespace CsWinFormsBlackApp
    Partial Public Class Form1
        Inherits DevExpress.XtraEditors.XtraForm
 
        Public Sub New()
            InitializeComponent()
        End Sub
        Dim con As New SqlConnection
        Public Sub Taoketnoi()
            Dim str As String = "Data Source=.;Initial Catalog=Student;Integrated Security=True"
            con.ConnectionString = str
            con.Open()
        End Sub
        Public Function LayDulieu() As DataTable
 
            Dim dt As New DataTable
            Dim da As New SqlDataAdapter
            da.SelectCommand = New SqlCommand("select masv as [Mã sinh viên], tensv as [Tên sinh viên], hinhanh as [Hình ảnh] from test", con)
            da.Fill(dt)
            Return dt
        End Function
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Taoketnoi()
            Dim dt As New DataTable
            dt = LayDulieu()
            GridControl1.DataSource = dt
            Dim repItemGraphicsEdit As New RepositoryItemGraphicsEdit()
            repItemGraphicsEdit.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Squeeze
            repItemGraphicsEdit.BestFitWidth = 100
            GridView1.Columns("Hình ảnh").ColumnEdit = repItemGraphicsEdit
        End Sub
        
    End Class
End Namespace

Chúc các bạn thành công!

Hướng dẫn chèn hình ảnh vào gridcontrol sử dụng VB.NET

Hướng dẫn chèn hình ảnh vào gridcontrol sử dụng VB.NET Đăng ngày 20-08-2016  Với Gridview mặc định của Winform thì chúng ta có thể chèn hình ảnh từ đường dẫn vào. Nhưng trong GridControl của Devexpress, nếu chúng ta muốn chèn hình ảnh vào GridControl, thì mặc định nó hỗ trợ đọc hình ảnh dưới dạng Base64, nếu hình ảnh được lưu vào database thì sẽ đọc được bình thường 3/10 440

Thảo luận:

Để bình luận bạn phải đăng nhập thành viên.

File tương tự

Files cùng mục

 
Hỗ trợ kỹ thuật cho thành viên:
Số di động (Hotline): 0125.99999.25
Thời gian làm việc:
Sáng: 8h-12h; Chiều: 13h30-17h30
(Nghỉ chiều T7, CN và các ngày lễ, tết)
Chat với Megacode
https://www.facebook.com/megacodevn
File gợi ý cho bạn
File tải nhiều nhất
Megacode.vn - Thư viện mã nguồn chia sẻ, tải file cho cộng đồng
Copyright © 2013-2016. All rights reserved. Bản quyền thuộc VinaGon
Địa chỉ: Số 38 Hàng Bè, Hàng Bạc, Hoàn Kiếm, Hà Nội.
Văn phòng giao dịch: Phòng 28, Tầng 6, HH1A Linh Đàm, Hoàng Mai, Hà Nội
Email: info@vinagon.com | Website: www.vinagon.com | Điện thoại: (+844) 6. 32.979.36;