dev 实现表格相同列合并

dev 实现表格相同列合并

实现效果

 一、自动合并

实现步骤

1、在“GridControl”中右键打开“Run Designer”

 2、在“Options”中下拉找到“OptionsView”,点开找到“AllowCellMerge”属性,设置为“True”

 

说明:设置GridControl控件的AllowCellMerge的属性为true之后,会把表格中所有相同的列都自动合并在一起。但是,如果想自定义合并某些列,那么单纯的设置AllowCellMerge 为true是无法实现的。

 二、自定义合并列

说明:要实现这种按照自定义条件合并单元格,只是单纯的设置AllowCellMerge属性为true是无法实现的,要重新设置

GridControl 控件的CellMerge监听事情,在CellMerge事件中设置合并的条件筛选事件。

实现步骤

        /// <summary>
        /// 自定义合并列
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gvSummary_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e)
        {
            //只合并以下列名的单元格,其他列一律不合并
            if (e.Column.FieldName == "FCheckDisplay" || e.Column.FieldName == "FOutPlanNo" || e.Column.FieldName == "FSaleOrderNo" || e.Column.FieldName == "FBatchNo" || e.Column.FieldName == "FDeliveryTypeName" || e.Column.FieldName == "FDeliveryTime" || e.Column.FieldName == "FCustName" || e.Column.FieldName == "FProductCode" || e.Column.FieldName == "FProductName" || e.Column.FieldName == "FSpecsName" || e.Column.FieldName == "FMaterialStatus" || e.Column.FieldName == "FNum" || e.Column.FieldName == "FWeight" || e.Column.FieldName == "FMakeDate" ||e.Column.FieldName == "FMaker" || e.Column.FieldName == "FIssuer" || e.Column.FieldName == "FIssueDate")
            {
                int row1 = e.RowHandle1;
                int row2 = e.RowHandle2;
                string value1 = gvSummary.GetDataRow(row1)["FOutPlanNo"].ToString(); 
                string value2 = gvSummary.GetDataRow(row2)["FOutPlanNo"].ToString();
                if (value1 != value2)
                {
                    e.Merge = false;   //值相同的2个单元格是否要合并在一起
                    e.Handled = true;  //合并单元格是否已经处理过,无需再次进行省缺处理
                }
            }
        }
自定义合并列 View Code

 

 

posted @ 2022-06-29 11:50  大木瓜  阅读(1106)  评论(0编辑  收藏  举报