關於Devexpress 控件之 GridControl控件一些用法,附上實例一個


本人也是在昨天2022年4月6日第一次接觸DEV控件,我的師傅就給我拍下一個任務。內容如下:

1、新建.netframwork4.7桌面程序工程
2、在窗體中創建DEV的GridControl
3、設計類員工,擁有屬性 員工ID 姓名 年齡 性別 所屬部門 (員工ID為隨機的Guid,其他屬性類型自定)
4、界面添加按鈕,增加。編寫按鈕邏輯,點擊后在緩存中添加員工對象
5、將添加的對象緩存顯示在GridControl中
6、實現在GridControl對緩存中員工屬性的直接修改
7、界面添加按鈕,刪除。編寫按鈕邏輯,對GridControl中所選中的對象執行從緩存中刪除的功能

額外:(參考已有代碼編寫)
1、在關閉界面時,將緩存中的員工對象保存至本地。
2、在打開界面時,讀取本地的員工信息到緩存中,並在界面顯示。

於是乎 我便做了如下的編寫。先上截圖:

 

 

 功能很簡單,但是我還是有一些沒搞懂,純屬自己摸索的。  

 1. 首先得有DEV控件  ,是吧哈哈哈。。。。感覺自己是個智障。

 

 2.附上代碼,

using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;
using System;
using System.ComponentModel;
using System.Data;
using System.Runtime.CompilerServices;
using System.Windows.Forms;

namespace EmployTest
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
            //gridView1標題
            gridView1.GroupPanelText = "員工管理:";
            //gridView1頂部顯示添加行
            gridView1.OptionsView.NewItemRowPosition = NewItemRowPosition.Top;
            //gridView1允許編輯
            gridView1.OptionsBehavior.Editable = true;
            #region gridView1選中行后按快捷鍵 “Del” 刪除
            //gridControl1.ProcessGridKey += (s, e) =>
            //{
            //    if (e.KeyCode == Keys.Delete )
            //    {
            //        if (XtraMessageBox.Show("是否刪除選中行?", "刪除行對話框", MessageBoxButtons.YesNo) !=
            //          DialogResult.Yes)
            //            return;
            //        GridControl grid = s as GridControl;
            //        GridView view = grid.FocusedView as GridView;
            //        view.DeleteSelectedRows();
            //    }
            //};
            #endregion
        }
        /// <summary>
        /// 字段屬性設置並驗證字段屬性數據的正確性,屬性變更后向客戶端發出屬性值已更改的通知。
        /// </summary>
        public class Record : INotifyPropertyChanged
        {
            int id;
            [DisplayName("序號")]
            public int ID
            {
                get { return id; }
                set
                {
                    if (id != value)
                    {
                        id = value;
                        OnPropertyChanged();
                    }
                }
            }
            string text;
            [DisplayName("姓名")]
            public string Name
            {
                get { return text; }
                set
                {
                    if (text != value)
                    {
                        if (string.IsNullOrEmpty(value))
                            throw new Exception();
                        text = value;
                        OnPropertyChanged();
                    }
                }
            }

            string age;
            [DisplayName("年齡")]
            public string Age
            {
                get { return age; }
                set
                {
                    if (age != value)
                    {
                        if (string.IsNullOrEmpty(value))
                            throw new Exception();
                        age = value;
                        OnPropertyChanged();
                    }
                }
            }

            string dt;
            [DisplayName("性別")]
            public string Gender
            {
                get { return dt; }
                set
                {
                    if (dt != value)
                    {
                        dt = value;
                        OnPropertyChanged();
                    }
                }
            }

            string dt1;
            [DisplayName("部門")]
            public string Bumen
            {
                get { return dt1; }
                set
                {
                    if (dt1 != value)
                    {
                        dt1 = value;
                        OnPropertyChanged();
                    }
                }
            }
            /// <summary>
            /// 通知界面屬性
            /// </summary>
            public event PropertyChangedEventHandler PropertyChanged;
            protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
            {
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
        /// <summary>
        /// 生成隨機字段數據
        /// </summary>
        public class DataHelper
        {
            public static string[] names = new string[] { "小張", "小王", "小希", "小錢",
            "小馬", "小磊", "小紅" ,"小明"};
            public static string[] gender = new string[] { "", "" };
            public static string[] bumen = new string[] { "軟件", "電氣" };
            public static BindingList<Record> GetData(int count)
            {
                BindingList<Record> records = new BindingList<Record>();
                Random rnd = new Random();
                for (int i = 0; i < count; i++)
                {
                    int n = rnd.Next();
                    records.Add(new Record()
                    {
                        ID = i + 0,
                        Name = names[i % names.Length],
                        Gender = gender[i % gender.Length],
                        Age = Convert.ToString(rnd.Next(1, 50)),
                        Bumen = bumen[i % bumen.Length],
                    });
                };
                return records;
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //dataGrid自動在數據源中找到公共字段並創建列。
            gridControl1.DataSource = DataHelper.GetData(20);

            //創建一個ComboBox編輯器,在“姓名”列中顯示可用的姓名。
            RepositoryItemComboBox riComboBox = new RepositoryItemComboBox();
            riComboBox.Items.AddRange(DataHelper.names);
            gridControl1.RepositoryItems.Add(riComboBox);
            gridView1.Columns["Name"].ColumnEdit = riComboBox;

            //創建一個ComboBox編輯器,在“性別”列中顯示可用的性別。
            RepositoryItemComboBox riComboBox1 = new RepositoryItemComboBox();
            riComboBox1.Items.AddRange(DataHelper.gender);
            gridControl1.RepositoryItems.Add(riComboBox1);
            gridView1.Columns["Gender"].ColumnEdit = riComboBox1;

            //創建一個ComboBox編輯器,在“部門”列中顯示可用的部門。
            RepositoryItemComboBox riComboBox2 = new RepositoryItemComboBox();
            riComboBox2.Items.AddRange(DataHelper.bumen);
            gridControl1.RepositoryItems.Add(riComboBox2);
            gridView1.Columns["Bumen"].ColumnEdit = riComboBox2;
        }
        /// <summary>
        /// 導出excel
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Btn_Output_Click_1(object sender, EventArgs e)
        {
            SaveFileDialog fileDialog = new SaveFileDialog();
            fileDialog.Title = "導出Excel";
            fileDialog.Filter = "Excel文件(*.xls)|*.xls";
            DialogResult dialogResult = fileDialog.ShowDialog(this);
            if (dialogResult == DialogResult.OK)
            {
                DevExpress.XtraPrinting.XlsExportOptions options = new
                DevExpress.XtraPrinting.XlsExportOptions();
                gridControl1.ExportToXls(fileDialog.FileName);
                DevExpress.XtraEditors.XtraMessageBox.Show("保存成功!", "提示",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        /// <summary>
        /// 增加行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddRow_Click(object sender, EventArgs e)
        {
            gridView1.AddNewRow();
        }
        /// <summary>
        /// 刪除行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DelRow_Click(object sender, EventArgs e)
        {
            if (XtraMessageBox.Show("請確定是否刪除當前記錄?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                GridControl grid = new GridControl();
                GridView view = grid.FocusedView as GridView;
                gridView1.DeleteSelectedRows();
            }
        }
    }
}

注意點: 保姆級別的教程。

 

 選中行設置。

 

 

3. 至此,所有的代碼就在這里了,寫了兩種刪除的方法。

 代碼下載地址:點我  提取碼: 8ug9 

 

還有很多不足,請各位大佬手下留情。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM