Dev屬性設置


DisplayFormat 設置顯示格式如:{0:P}表示顯示為百分號模式。如數據源中為0.5。表示出來為50%

 

2、GridContro總合計及分組合計:

常規總合計直接RunDesigner-Group Summary Items

DisplayFormat 設置顯示格式如:{0:P}表示顯示為百分號模式。如數據源中為0.5。表示出來為50%

FieldName 設置顯示的對應列

ShowInGroupColumnFooter 在那一列下面顯示

SummaryType 合計方式。選擇Custom表示自定義。CustomSummaryCalculate事件可處理

//Footer行自定義列合計
  GridView view = sender as GridView;
  if (e.Item == view.Columns["RateZk"].SummaryItem)
  {
    decimal x = Convert.ToDecimal(view.Columns["RetailFAmount"].SummaryItem.SummaryValue);
    decimal y = Convert.ToDecimal(view.Columns["RetailAmount"].SummaryItem.SummaryValue);
    view.Columns["RateZk"].SummaryItem.DisplayFormat = "{0:P}";
    )
    e.TotalValue = x / y;
    else
    e.TotalValue = ;
  }

GridContro導出Excel操作:

SaveFileDialog saveFileDialog = new SaveFileDialog();
   saveFileDialog.Title = "導出Excel";
   saveFileDialog.Filter = "Excel文件(*.xls)|*.xls";
   DialogResult dialogResult = saveFileDialog.ShowDialog(this);
   if (dialogResult == DialogResult.OK)
   {
     this.gvbrowse.OptionsPrint.AutoWidth = false; //設置導出的Excel自動調整列寬,列寬和控件的列寬一致
     this.gcbrowse.ExportToXls(saveFileDialog.FileName);
     //this.gcbrowse.ExportToXlsOld(saveFileDialog.FileName);//這個方法默認會自動調整列寬,但是office10以上版本有的會報錯
     DevExpress.XtraEditors.XtraMessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
     this.gvbrowse.OptionsPrint.AutoWidth = true;
   }

GridControl列要顯示百分號:

Run Designer-Columns列 FormatType="Numeric" FormatString="p"

自動調整所有字段寬度  this.gridView1.BestFitColumns();

顯示滾動條:gridView1.OptionsView.ColumnAutoWidth屬性是true,即各列的寬度自動調整,你把它設成false,就會出現了。

設置奇、偶行交替顏色

  • OptionsView.EnableAppearanceEvenRow = true;OptionsView.EnableAppearanceOddRow = true;

MultiSelect = true;   //設置可多選

 MultiSelectMode =CellSelect/RowSelect;//多選行還是多選單元格(一般選RowSelect)

//禁用標題行過濾

AllowFilter = false; 

//禁用標題行排序

AllowSort = false;

//禁止列移動

AllowColumnMoving = false;

//禁止改變列寬

AllowColumnResizing = false;

FocusRectStyle = None; //取消點擊后的虛線框

 下拉框清空

1、清值 comboboxedit2.editvalue=null;

2、清列表 comboboxedit2.properties.items.clear();

GridView 設置選中行的顏色

  GridView : Run Designer ->  Appearences : selectRow & FocusedRow (兩項都要設置)  

  BackColor :  MediumSlateBlue  背景色

 ForeColor :  White    前景色 字體顏色

GridView 設置標題行以及內容行 數據居中

 標題行 10 所述 在HeadPanel 里有一個TextOptions  展開之后 將HAlignment :  Center  

 如果是將內容行數據居中.有兩種方法 1 : 逐行設置  2 : 設置Appearences

 1 : GridView -> Run Designer -> Columns  -> AppearanceCell ->  TextOptions 找到HAlignment :  Center .

 2 : GridView -> Run Designer -> Appearance ->  ViewCaption -> TextOptions -> HAlignment : Center

GridView 添加 序號 列

  GridView : Run Designer ->  Event  -> CustomDrawRowIndicator

 在事件中添加代碼

public static void DrawRowIndicator(this GridView gridView, int width = 40, string headTitle = "行號")
        {

            gridView.CustomDrawRowIndicator += (sender, e) =>
            {
                e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
                if (e.Info.Kind == DevExpress.Utils.Drawing.IndicatorKind.Header)
                {
                    e.Appearance.DrawBackground(e.Cache, e.Bounds);
                    e.Appearance.DrawString(e.Cache, headTitle, e.Bounds);
                    e.Handled = true;
                }
                if (e.Info.IsRowIndicator)
                {

                    if (e.RowHandle >= 0)
                    {
                        e.Info.DisplayText = (e.RowHandle + 1).ToString();
                    }
                    else if (e.RowHandle < 0 && e.RowHandle > -1000)
                    {
                        e.Info.Appearance.BackColor = System.Drawing.Color.AntiqueWhite;
                        e.Info.DisplayText = "G" + e.RowHandle.ToString();
                    }
                }
            };
            gridView.IndicatorWidth = width != 0 ? width : 40;
        }

 

另外在 Run Desginer ->  IndicatorWidth  設置序號列的寬度 一般50左右就比較適合一些了.

漢化按鈕提示:

        public class ChEditLocalizer : Localizer
        {
            // 重載 GetLocalizedString 方法
            public override string GetLocalizedString(StringId id)
            {
                switch (id)
                {
                    //Button 按鈕漢化
                    case StringId.XtraMessageBoxOkButtonText:
                        return "確認";
                    case StringId.XtraMessageBoxCancelButtonText:
                        return "取消";
                    case StringId.XtraMessageBoxAbortButtonText:
                        return "退出";
                    case StringId.XtraMessageBoxRetryButtonText:
                        return "重試";
                    case StringId.XtraMessageBoxIgnoreButtonText:
                        return "忽略";
                    case StringId.XtraMessageBoxYesButtonText:
                        return "";
                    case StringId.XtraMessageBoxNoButtonText:
                        return "";
                }
                return base.GetLocalizedString(id);
            }
        }

 

 public class XtraGrid_CN : GridLocalizer 
    {
        public override string GetLocalizedString(GridStringId id)
        {
            switch(id)
            {
                case GridStringId.ColumnViewExceptionMessage:return "是否進行更正?";
            }
            return base.GetLocalizedString(id);
        }
    }

 

皮膚設置:

  DevExpress.UserSkins.OfficeSkins.Register(); //注冊office的皮膚 請先加入引用office的dll文件,關於如何引用 請看下文
            DevExpress.UserSkins.BonusSkins.Register(); //注冊BonusSkins的皮膚
           if (!DevExpress.Skins.SkinManager.AllowFormSkins)
               DevExpress.Skins.SkinManager.EnableFormSkins();
            DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName = "Black"; //默認黑背景

 

 DevExpress實現GridView當無數據行時提示消息  https://ctolib.com/topics-51130.html

/// <summary>
/// 設置當沒有數據行的提示信息『CustomDrawEmptyForeground』
/// </summary>
/// <param name="gridView">GridView</param>
/// <param name="e">CustomDrawEventArgs</param>
/// <param name="noRecordMsg">提示信息</param>
public static void DrawNoRowCountMessage(this GridView gridView, CustomDrawEventArgs e, string noRecordMsg)
{
  if (gridView == null)
 throw new ArgumentNullException("gridView");
  if (gridView.RowCount == 0)
  {
 if (!string.IsNullOrEmpty(noRecordMsg))
 {
   Font _font = new Font("宋體", 10, FontStyle.Bold);
   Rectangle _r = new Rectangle(e.Bounds.Left + 5, e.Bounds.Top + 5, e.Bounds.Width - 5, e.Bounds.Height - 5);
   e.Graphics.DrawString(noRecordMsg, _font, Brushes.Black, _r);
 }
  }
}

代碼使用方法如下:

private void gvLampTotal_CustomDrawEmptyForeground(object sender, DevExpress.XtraGrid.Views.Base.CustomDrawEventArgs e)
{
  gvLampTotal.DrawNoRowCountMessage(e, "暫無符合的數據!");
}

 

DevExpress實現GridControl列頭繪制Checkbox的方法  https://ctolib.com/topics-51144.html    http://aloysians.com/blog/getInfo/52837/1491226375

/// <summary>
/// 為列頭繪制CheckBox
/// </summary>
/// <param name="view">GridView</param>
/// <param name="checkItem">RepositoryItemCheckEdit</param>
/// <param name="fieldName">需要繪制Checkbox的列名</param>
/// <param name="e">ColumnHeaderCustomDrawEventArgs</param>
public static void DrawHeaderCheckBox(this GridView view, RepositoryItemCheckEdit checkItem, string fieldName, ColumnHeaderCustomDrawEventArgs e)
{
  /*說明:
   *參考:https://www.devexpress.com/Support/Center/Question/Details/Q354489
   *在CustomDrawColumnHeader中使用
   *eg:
   * private void gvCabChDetail_CustomDrawColumnHeader(object sender, DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e)
   * {
   * GridView _view = sender as GridView;
   * _view.DrawHeaderCheckBox(CheckItem, "Check", e);
   * }
   */
  if (e.Column != null && e.Column.FieldName.Equals(fieldName))
  {
 e.Info.InnerElements.Clear();
 e.Painter.DrawObject(e.Info);
 DrawCheckBox(checkItem, e.Graphics, e.Bounds, getCheckedCount(view, fieldName) == view.DataRowCount);
 e.Handled = true;
  }
}
private static void DrawCheckBox(RepositoryItemCheckEdit checkItem, Graphics g, Rectangle r, bool Checked)
{
  CheckEditViewInfo _info;
  CheckEditPainter _painter;
  ControlGraphicsInfoArgs _args;
  _info = checkItem.CreateViewInfo() as CheckEditViewInfo;
  _painter = checkItem.CreatePainter() as CheckEditPainter;
  _info.EditValue = Checked;

  _info.Bounds = r;
  _info.PaintAppearance.ForeColor = Color.Black;
  _info.CalcViewInfo(g);
  _args = new ControlGraphicsInfoArgs(_info, new DevExpress.Utils.Drawing.GraphicsCache(g), r);
  _painter.Draw(_args);
  _args.Cache.Dispose();
}
private static int getCheckedCount(GridView view, string filedName)
{
  int count = 0;
  for (int i = 0; i < view.DataRowCount; i++)
  {
 object _cellValue = view.GetRowCellValue(i, view.Columns[filedName]);
 if (_cellValue == null) continue;
 if (string.IsNullOrEmpty(_cellValue.ToString().Trim())) continue;
 bool _checkStatus = false;
 if (bool.TryParse(_cellValue.ToString(), out _checkStatus))
 {
   if (_checkStatus)
 count++;
 }
  }
  return count;
}

使用方法如下:

RepositoryItemCheckEdit CheckItem = new RepositoryItemCheckEdit();
const string gcCheckFieldName = "Checked";
private void gvLampConfig_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e)
{
  GridView _view = sender as GridView;
  _view.DrawHeaderCheckBox(CheckItem, gcCheckFieldName, e);
}

實際寫法:

   private bool _mCheckStatus;     //選中狀態

        private void gvCrabsRequisition_CustomDrawColumnHeader(object sender, DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e)
        {
            if (e.Column != null && e.Column.FieldName == "CheckState")
            {
                e.Info.InnerElements.Clear();
                e.Painter.DrawObject(e.Info);
                DevControlHelper.DrawCheckBox(e, _mCheckStatus);
                e.Handled = true;
            }
        }

        public static void DrawCheckBox(ColumnHeaderCustomDrawEventArgs e, bool chk)
        {
            var repositoryCheck = e.Column.ColumnEdit as RepositoryItemCheckEdit;
            if (repositoryCheck == null) return;
            var g = e.Graphics;
            var r = e.Bounds;

            var info = repositoryCheck.CreateViewInfo() as CheckEditViewInfo;

            var painter = repositoryCheck.CreatePainter() as CheckEditPainter;
            if (info == null) return;
            info.EditValue = chk;
            info.Bounds = r;
            info.CalcViewInfo(g);
            var args = new ControlGraphicsInfoArgs(info, new GraphicsCache(g), r);
            painter?.Draw(args);
            args.Cache.Dispose();
        }

        private void gvCrabsRequisition_Click(object sender, EventArgs e)
        {
            if (DevControlHelper.ClickGridCheckBox(gvCrabsRequisition, "CheckState", _mCheckStatus))
            {
                _mCheckStatus = !_mCheckStatus;
            }
        }

 默認的數字、日期等輸入,都要切換輸入法才可以輸入,不能默認就支持數字的輸入,那么是否有辦法解決呢

 記得逢數字,日期的控件,必須設置 ImeMode=Off 。

設置指定列可以編輯

        private void gvCrabsRequisition_ShowingEditor(object sender, CancelEventArgs e)
        {
            GridView _view = sender as GridView;
            List<string> editList = new List<string>() { "colWarehouseRequisedActualAmountAdd", "colCheckState" };
            if (editList.Contains(_view.FocusedColumn.Name) == false)
            {
                e.Cancel = true;
            }
        }

 設置gridview默認屬性

        /// <summary>
        /// 設置girdView默認屬性
        /// </summary>
        /// <param name="gv"></param>
        public static void SetStyle(DevExpress.XtraGrid.Views.Grid.GridView gv)
        {
            /*
              * author:wxm
              * date  :2014年7月25日10:59:08
              * */
            gv.OptionsView.ShowGroupPanel = false; //不允許自定義分組
            gv.RowHeight = 22;  //行高22
            gv.OptionsView.ShowFooter = false;  //不顯示頁腳
            //表頭行高設置為24、分組行高設置為35(為僅有一級分組的行高)
            gv.ColumnPanelRowHeight = 24;
            gv.GroupRowHeight = 35;
            //列表中最前面的空白列的寬度設置為12
            gv.IndicatorWidth = 12;
            //設置列表是否多選、多選的模式(行或單元格)、選擇的行或單元格背景是否倒置
            gv.OptionsSelection.MultiSelect = false;
            gv.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;
            gv.OptionsSelection.InvertSelection = false;
            gv.OptionsSelection.EnableAppearanceFocusedCell = false;
            //允許編輯
            gv.OptionsBehavior.Editable = true;
            //不顯示分組面板
            gv.OptionsView.ShowGroupPanel = false;
            //不允許用戶進行過濾和分組
            gv.OptionsCustomization.AllowFilter = false;
            gv.OptionsCustomization.AllowGroup = false;
            //允許用戶拖動列和不允許進行列排序
            gv.OptionsCustomization.AllowColumnMoving = true;
            gv.OptionsCustomization.AllowSort = false;
            //列標題垂直居中
            gv.Appearance.HeaderPanel.Options.UseTextOptions = true;
            gv.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
            gv.Appearance.HeaderPanel.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
            //將數據行內容垂直,文字左對齊,數字右對齊
            //gv.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
            //gv.Appearance.Row.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
            //HAlignment(水平位置):Far(數字右對齊)/Near(文字、日期左對齊)
            //不顯示右鍵菜單
            gv.OptionsMenu.EnableColumnMenu = false;
            //自動過濾時不顯示過濾記錄
            gv.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never;
        }

參考:https://zhidao.baidu.com/question/1174521530470594219.html

校驗數據有效性:

        /// <summary>
        /// 校驗更改后單元格數據有效性
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gvCrabsRequisition_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            try
            {
                var list = gcCrabsRequisition.DataSource as List<GetCrabStockRequisitionItem>;
                if (list.IsHasRow())
                {
                    var lstCheck = list.Where(r => r.CheckState).ToList();
                    //選中1個才校驗
                    if (lstCheck.Count == 1)
                    {
                        GridView view = sender as GridView;
                        GridColumn _productId = view.Columns["ProductId"];//原料Id
                        GridColumn _submitAmount = view.Columns["WarehouseRequisedActualAmountAdd"];//本次調撥數量
                        Guid productId = (Guid)view.GetRowCellValue(e.RowHandle, _productId);
                        var cellAmout = view.GetRowCellValue(e.RowHandle, _submitAmount);
                        decimal submitAmount = cellAmout.IsNull() ? 0 : (decimal)cellAmout;
                        //var serachAmount = _kvSerchActualAmountList.FirstOrDefault(s => s.Key == productId).Value;
                        var regex = new Regex(@"^\d+$");    //正則 判斷非負整數
                        if (regex.IsMatch(submitAmount.ToString()))
                        {
                            view.SetColumnError(_submitAmount,"本次調撥數量在更改后必須是正整數!");
                        }
                        //if (submitAmount > serachAmount)
                        //{
                        //    e.Valid = false;
                        //    view.SetColumnError(_submitAmount, "數量在更改后不能超過之前查詢的結果值,請檢查!");
                        //    return;
                        //}
                        if (submitAmount <= 0 || string.IsNullOrEmpty(submitAmount.ToString()))
                        {
                            e.Valid = false;
                            view.SetColumnError(_submitAmount, "數量在更改后大於0才能提交,請檢查!");
                            return;
                        }
                        if (e.Valid)
                        {
                            view.ClearColumnErrors();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageCommon.ShowWar($"校驗異常:{ex.Message}");
            }
        }

 DevExpress中GridControl中實現checkbox多行選中

在我們要綁定的容器中添加一個新列

我用的是DataTable 在DataTable中添加一個新列代碼如下

            //新建一個數據表 probll.GetProductAll自己寫的方法
            DataTable db = probll.GetProductAll(4, pageIndex, "申請中", 0, out pageCount);
            //在表中增加一個列 add(列名,列類型)
            db.Columns.Add("check", typeof(bool));
            //給每一行的該列賦值
            for (int i = 0; i < db.Rows.Count; i++)
            {
                db.Rows[i]["check"] = "false";
            } 

注意:新增列的類型為bool類型

設置可以多選

gridView1 .OptionsSelection.MultiSelect = true; 
gridView1 .OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;

設置獲取選中行的需要值

string value="";  
          string strSelected="";  
            for (int i = 0; i < gridView1.RowCount; i++)  
           {   //   獲取選中行的check的值       
               value = gridView1.GetDataRow(i)["check"].ToString();  
               if (value == "True")  
               {
                 // productid 是我綁定數據表的字段 可以自己根據需求定義 這樣就可以實現文中開始處的功能了                
                 strSelected += gridView1.GetRowCellValue(i, "productid");
                }             
           }

原文:http://blog.csdn.net/l1158513573/article/details/46502569

gridControl:給該列添加組件(如按鈕)  三種方法
法一:打開設計器(Run Designer),選擇左側Repository,點擊In-place Editor Repository(內嵌編輯器),點擊Add右側的下拉菜單


,選擇你想添加的控件,比如ComboBoxEdit,再在右側編輯控件的屬性,ComboBox的話就可以設置Data下的Items集合,然后點左側


Main里的Columns,點你想在上頭添加控件的列,找右側Data下的ColumnEdit,點最右邊的下拉菜單,點Existing左側的加號,就能找


到你剛才的控件,添加。會默認給該列的每一個格都加上這個控件。


法二:點擊你想添加控件的列標題,再點屬性欄中的ColumnEdit,下拉菜單點new,選擇想添加的控件,然后Column Edit左側會出現加


號,展開加號,下方會出現許多子屬性,這些都是設置內嵌的控件的屬性的。
法三:直接寫代碼。
②       拖動一個gridControl控件,改變視圖為BandedGridview,屬性欄中點OptionView,選擇NewItemRowPosition,選Bottom
②添加引用:usingDevExpress.XtraGrid.Views.BandedGrid;
form的構造函數中添加代碼:


BandedGridColumn newColumn = bandedGridView1.Columns.Add() as BandedGridColumn;
           newColumn.Caption = "Country";
           bandedGridView1.Bands[0].Columns.Add(newColumn);
            newColumn.Visible = true;
②(假設添加的控件是計算器)添加引用:usingDevExpress.XtraEditors.Repository;
form的構造函數中繼續添加代碼,效果圖
RepositoryItemCalcEdit calcEdit = new RepositoryItemCalcEdit();
           gridControl.RepositoryItems.Add(calcEdit);
            newColumn.ColumnEdit = calcEdit;

原文: http://blog.csdn.net/qq_30756923/article/details/77982536  整理GridControl層級表格及按鈕列

 

參考:

http://www.cnblogs.com/DeepLearing/p/3887601.html         DevExpress GridView 那些事兒

http://blog.csdn.net/wsnwxm/article/details/7486606    DevExpress控件漢化教程詳解

http://blog.csdn.net/wsnwxm/article/details/7483900     DXperience皮膚設置 C#第三方控件學習筆記

http://group.pandorabox.cn/forum.php?mod=viewthread&tid=266  漢化提示

 https://ctolib.com/topics-51073.html 

DevExpress根據條件設置GridControl RepositoryItem(設定指定列)是否可編輯

http://www.cnblogs.com/DeepLearing/p/3927358.html 修改DevExpress中英文提示,將英文改為中文

http://www.cnblogs.com/YanZhiwei/p/3277455.html    [DevExpress]實現GridControl輸入驗證

http://www.cnblogs.com/wuhuacong/archive/2012/07/17/2595182.html   DevExpress控件開發常用要點(項目總結版)

http://blog.csdn.net/yangyifan0/article/details/11988585  DEVexpress GridControl 屬性設置


免責聲明!

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



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