NEWS

[DEVEXPRESS] Hướng dẫn đổi tên caption tiêu đề header column trên GridView

[DEVEXPRESS] Hướng dẫn đổi tên caption tiêu đề header column trên GridView
Đăng bởi: Thảo Meo - Lượt xem: 5506 12:58:12, 09/06/2021C#   In bài viết

Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách thay đổi tiêu đề trực tiếp trên Header Column Gridview Devexpress C# Winform.

[DEVEXPRESS] Rename caption column header gridview c#

Khi các bạn thiết kế ứng dụng, thông thường các bạn sẽ đặt tên cho các cột trên table Gridview.

Và bạn mong muốn là có thể cho phép người dùng cuối được tùy ý thay đổi tên cột theo ý muốn của họ.

Thì bài viết sau, sẽ giúp bạn thực hiện điều này một cách đơn giản.

Các bạn nhớ sau khi thay đổi tiêu đề column, các bạn cần phải lưu layout trên Gridview lại nhé.

Giao diện demo ứng dụng thay đổi tên column Header Gridview devexpress:

rename_header_column_gridview

Đầu tiên, các bạn tạo cho mình class MyGridColumnRenameHelper.cs với nội dung sau:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using DevExpress.Utils;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevExpress.XtraEditors;
using DevExpress.Skins;

namespace RenameHeaderColumn
{
    public class MyGridColumnRenameHelper
    {
        #region Fields

        GridView gridView;
        TextEdit headerEdit;
        GridColumn editedColumn;

        #endregion

        public bool IsEditing
        {
            get { return editedColumn != null; }
        }


        #region Methods
        public MyGridColumnRenameHelper(GridView view)
        {
            gridView = view;
            Initialize();
            SubscribeEvents();
        }

        void SubscribeEvents()
        {
            gridView.DoubleClick += gridView_DoubleClick;
            headerEdit.Leave += headerEdit_Leave;
            headerEdit.KeyDown += headerEdit_KeyDown;
        }

        GridColumn GetColumn(DXMouseEventArgs args)
        {
            GridHitInfo info = gridView.CalcHitInfo(args.Location);
            if (info.InColumnPanel) return info.Column;
            return null;
        }

        Color GetColor()
        {
            Skin currentSkin = CommonSkins.GetSkin(gridView.GridControl.LookAndFeel);
            return currentSkin.TranslateColor(SystemColors.Control);
        }

        void Initialize()
        {
            gridView.OptionsCustomization.AllowSort = false;
            headerEdit = new TextEdit();
            headerEdit.Hide();
            headerEdit.Parent = gridView.GridControl;
            headerEdit.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
        }

        void ShowCaptionEditor(GridColumn column)
        {
            GridViewInfo vi = gridView.GetViewInfo() as GridViewInfo;
            Rectangle bounds = vi.ColumnsInfo[column].Bounds;
            bounds.Width -= 3;
            bounds.Height -= 3;
            bounds.Y += 3;
            headerEdit.BackColor = GetColor();
            headerEdit.SetBounds(bounds.X, bounds.Y, bounds.Width, bounds.Height);
            headerEdit.EditValue = column.GetCaption();
            headerEdit.Show();
            headerEdit.Focus();
        }

        void StartColumnCaptionEditing(GridColumn column)
        {
            ShowCaptionEditor(column);
            editedColumn = column;
        }

        void EndColumnCaptionEditing()
        {
            if (!IsEditing) return;
            editedColumn.Caption = headerEdit.Text;
            headerEdit.Hide();
            editedColumn = null;
        }
        #endregion


        void gridView_DoubleClick(object sender, EventArgs e)
        {
            GridColumn column = GetColumn(e as DXMouseEventArgs);
            if (column == null) return;
            StartColumnCaptionEditing(column);
        }


        void headerEdit_Leave(object sender, EventArgs e)
        {
            EndColumnCaptionEditing();
        }


        void headerEdit_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
                EndColumnCaptionEditing();
        }


    }
}

Và Gridview nào bạn muốn sử dụng, chỉ cần gọi class này và truyền vào name của Gridview đó.

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace RenameHeaderColumn
{
    public partial class Form1 : DevExpress.XtraEditors.XtraForm
    {
        public Form1()
        {
            InitializeComponent();
        }

        List<Result> listMovie;
        public class Result
        {
            public double popularity { get; set; }
            public int vote_count { get; set; }
            public bool video { get; set; }
            public string poster_path { get; set; }
            public int id { get; set; }
            public bool adult { get; set; }
            public string backdrop_path { get; set; }
            public string original_language { get; set; }
            public string original_title { get; set; }
            public string title { get; set; }
            public double vote_average { get; set; }
            public string overview { get; set; }
            public string release_date { get; set; }
        }

       
        public Task<List<Result>> LoadDataAsync()
        {
            return Task.Run(() => {
                var json = File.ReadAllText("movie.json");
                var data = JsonConvert.DeserializeObject<List<Result>>(json);
                return data;
            });
        }

        private async void Form1_Load(object sender, EventArgs e)
        {
            var data = await LoadDataAsync();
            gridControl1.DataSource = data;
            new MyGridColumnRenameHelper(gridView1);
        }
    }
}

Thanks for watching!

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[DEVEXPRESS] Hướng dẫn đổi tên caption tiêu đề header column trên GridView
Đăng bởi: Thảo Meo - Lượt xem: 5506 12:58:12, 09/06/2021C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.