DevExpress的GridControl的使用以及怎樣添加列和綁定數據源

来源:https://www.cnblogs.com/badaoliumangqizhi/archive/2019/12/19/12065791.html
-Advertisement-
Play Games

場景 Winform控制項-DevExpress18下載安裝註冊以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100061243 在上面搭建好DevExpress的環境後,要使用其GridControl控制項。 註 ...


場景

Winform控制項-DevExpress18下載安裝註冊以及在VS中使用:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100061243

在上面搭建好DevExpress的環境後,要使用其GridControl控制項。

註:

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關註公眾號
霸道的程式猿
獲取編程相關電子書、教程推送與免費下載

實現

首先在窗體中拖拽一個GridControl

 

 

然後在窗體的Load時事件中對其進行添加列和樣式設置

private void FrmSearch_Load(object sender, EventArgs e)
        {
            //設置GridControl樣式
            Common.GridControl.GridControlHelper.SetStyles(this.gridControl1.MainView as DevExpress.XtraGrid.Views.Base.ColumnView);
            //訂閱行點擊事件
            this.gridView1.RowClick += gridView1_RowClick;

        }

 

進入設置樣式的方法

public static void SetStyles(DevExpress.XtraGrid.Views.Base.ColumnView view)
        {
            if (view is DevExpress.XtraGrid.Views.Grid.GridView)
            {
                DevExpress.XtraGrid.Views.Grid.GridView gridView = view as DevExpress.XtraGrid.Views.Grid.GridView;

                gridView.OptionsView.ShowGroupPanel = false;                                              //隱藏最上面的GroupPanel
                gridView.OptionsView.ShowIndicator = false;                                               //隱藏指示列

                gridView.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.None;           //設置焦點框為整行
                gridView.OptionsSelection.EnableAppearanceFocusedCell = false;                                  //禁用單元格焦點
                gridView.OptionsSelection.EnableAppearanceFocusedRow = true;                                    //啟用整行焦點
                gridView.OptionsSelection.EnableAppearanceFocusedRow = true;                                    //啟用整行焦點
                gridView.OptionsSelection.EnableAppearanceHideSelection = false;

                gridView.OptionsView.EnableAppearanceEvenRow = true;                                            //啟用偶數行背景色
                gridView.OptionsView.EnableAppearanceOddRow = true;                                             //啟用奇數行背景色

                //gridView.Appearance.EvenRow.BackColor = System.Drawing.Color.FromArgb(150, 237, 243, 254);      //設置偶數行背景色
                //gridView.Appearance.OddRow.BackColor = System.Drawing.Color.FromArgb(150, 199, 237, 204);       //設置奇數行背景色
                //gridView.Appearance.FocusedRow.BackColor = System.Drawing.Color.Red;
                //gridView.Appearance.SelectedRow.BackColor = System.Drawing.Color.Red;

            }

            //禁用自動生成列
            view.OptionsBehavior.AutoPopulateColumns = false;
            //禁用自動列寬
            if (view is DevExpress.XtraGrid.Views.Grid.GridView)
            {
                (view as DevExpress.XtraGrid.Views.Grid.GridView).OptionsView.ColumnAutoWidth = false;
            }
            //禁用數據過濾面板
            view.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never;

            #region 添加列

            view.Columns.Clear();

            int index = 0;
            DevExpress.XtraGrid.Columns.GridColumn col = null;

            col = new DevExpress.XtraGrid.Columns.GridColumn();
            col.FieldName = "DBName";
            col.Caption = "資料庫名";
            col.Width = 200;
            col.VisibleIndex = index++;
            view.Columns.Add(col);

            col = new DevExpress.XtraGrid.Columns.GridColumn();
            col.FieldName = "ShortNodeText";
            col.Caption = "文件名";
            col.Width = 200;
            col.VisibleIndex = index++;
            view.Columns.Add(col);

            col = new DevExpress.XtraGrid.Columns.GridColumn();
            col.FieldName = "CreateDate";
            col.Caption = "創建日期";
            col.Width = 130;
            col.VisibleIndex = index++;
            view.Columns.Add(col);

            col = new DevExpress.XtraGrid.Columns.GridColumn();
            col.FieldName = "TaskFile";
            col.Caption = "任務文件";
            col.Width = 180;
            col.VisibleIndex = index++;
            view.Columns.Add(col);

            col = new DevExpress.XtraGrid.Columns.GridColumn();
            col.FieldName = "FullPath";
            col.Caption = "完整路徑";
            col.Width = 180;
            col.VisibleIndex = index++;
            view.Columns.Add(col);

            col = new DevExpress.XtraGrid.Columns.GridColumn();
            col.FieldName = "Barcode";
            col.Caption = "電池條碼";
            col.Width = 180;
            col.VisibleIndex = index++;
            view.Columns.Add(col);

            #endregion

            SetAllowEdit(view, false);                                          //禁用編輯
            SetAllowSort(view, DevExpress.Utils.DefaultBoolean.False);          //禁用排序
            SetAllowFilter(view, false);                                        //禁用數據過濾
        }

 

在上面方法中進行樣式的設置以及列的添加

註意在添加列時FieldName 屬性要與將來設置數據源時的欄位一致。

然後上面的禁用編輯的方法

public static void SetAllowEdit(DevExpress.XtraGrid.Views.Base.ColumnView view, bool isAllow)
        {
            foreach (DevExpress.XtraGrid.Columns.GridColumn col in view.Columns)
            {
                col.OptionsColumn.AllowEdit = isAllow;
            }
        }

 

禁用排序的方法

public static void SetAllowSort(DevExpress.XtraGrid.Views.Base.ColumnView view, DevExpress.Utils.DefaultBoolean value)
        {
            foreach (DevExpress.XtraGrid.Columns.GridColumn col in view.Columns)
            {
                col.OptionsColumn.AllowSort = value;
            }
        }

 

禁用數據過濾的方法

 public static void SetAllowFilter(DevExpress.XtraGrid.Views.Base.ColumnView view, bool isAllow)
        {
            foreach (DevExpress.XtraGrid.Columns.GridColumn col in view.Columns)
            {
                col.OptionsFilter.AllowAutoFilter = isAllow;
                col.OptionsFilter.AllowFilter = isAllow;
            }
        }

 

初始化完樣式和添加列後就要設置數據源

首先新建一個實體對象,對象要有與上面添加列時FieldName 所對應的屬性。

下麵是部門欄位和屬性,其他省略

 

public class DataTreeNode
    {
        private string id;
        private string parentId;
        private string nodeText;
        private string createDate;
        private string fullPath;
        private string taskFile;
        private string barcode;
        private DataTreeNodeTypes nodeType = DataTreeNodeTypes.Folder;

        /// <summary>
        /// 去掉擴展名的數據文件完整路徑
        /// </summary>
        public string Id
        {
            get { return id; }
            set { id = value; }
        }
        /// <summary>
        /// 父級節點的Id
        /// </summary>
        public string ParentId
        {
            get { return parentId; }
            set { parentId = value; }
        }
        /// <summary>
        /// 數據文件名稱
        /// </summary>
        public string NodeText
        {
            get { return nodeText; }
            set { nodeText = value; }
        }
     }

 

構建數據源

List<DataTreeNode> data = new List<DataTreeNode>();
data = DataTreeListHelper.ParseDir(Common.Global.AppConfig.TestDataDir, data);
var result = data.Where(p => p.NodeType = = DataTreeNodeTypes.File);

 

首先聲明上面實體對象的List,然後使用ParseDir方法將文件目錄進行遞歸查詢。

然後進行篩選出文件類型。

然後可以直接設置數據源

this.gridControl1.DataSource = result;

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • WPF中一些圖片處理方案整理,可以大致實現類似PS的一些基本功能:移動,裁剪,摳圖,背景橡皮擦等等 ...
  • Protected 在基類中定義後,能被派生類調用,但是不能被其他類調用。 virtual 在基類中定義後,在派生類中能被重寫。 using System; using System.Collections.Generic; using System.Text; namespace 繼承 { cla ...
  • 一丶簡單介紹下目錄結構和項目依賴,如圖 二丶主要核心自定義代碼 1. 添加自定義實現類 CustomProvider 2. 在silo中註入代替預設實現 3. 在grain類上啟用 三丶運行結果如下 示例代碼下載地址:SimpleStorage ...
  • string strguid = Guid.NewGuid().ToString();//57d99d89-caab-482a-a0e9-a0a803eed3ba 生成標準的標誌符 (36位標準)strguid = Guid.NewGuid().ToString("D");//57d99d89-ca ...
  • 目錄 獲取請求的參數 獲取完整的請求路徑 獲取功能變數名稱 編碼 文件上傳的保存方法 獲取物理路徑 返回Json屬性大小寫問題 webconfig的配置移植到appsettings.json 設置區域塊MVC的路由器和訪問區域塊的視圖 NetCore訪問靜態資源文件 MVC調用子頁視圖 過濾器 使用sess ...
  • 由於公司業務需要簡單的把代碼加密混淆,於是瞭解了一下相關的工具然後打算用ConfuserEx試試。 開源地址:https://github.com/yck1509/ConfuserEx/ 下載地址:https://github.com/yck1509/ConfuserEx/releases 開始工作 ...
  • 工欲善其事必先利其器,我們既然有Visual Studio2019這樣的IDE為什麼不用?學.Net Core而不用Visual Studio進行開發可謂是多麼另類呀!既然你已經安裝了VS2019的話我們就來創建一個MVC Web吧,如果你還不會安裝,可以看我之前發表的安裝教程,很簡單哦。之前講了命 ...
  • 原文地址: "ASP.NET Core Web API Best Practices Guide" 介紹 當我們編寫一個項目的時候,我們的主要目標是使它能如期運行,並儘可能地滿足所有用戶需求。 但是,你難道不認為創建一個能正常工作的項目還不夠嗎?同時這個項目不應該也是可維護和可讀的嗎? 事實證明,我 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...