Dev ASPxGridView 根据关键列分组合并单元格

Dev ASPxGridView 根据关键列分组合并单元格 :
List lMergeFileds=New List{…};//预定义需要合并的列名集合
string sMergeByKey=“业务编号”;//根据哪列进行单元格合并,在这里定义,比如我根据业务编号分组合并,即相同业务编号内合并

 protected void ASPxGridView1_CustomCellMerge(object sender, ASPxGridViewCustomCellMergeEventArgs e)
         {
             /*
              *在这种情况下,可以处理CustomCellMerge事件来手动实现单元格合并。该事件对列中的每对相邻单元格激发。
              *事件参数属性提供有关已处理列(列)、包含已处理单元格的行的可见索引(RowVisibleIndex1和RowVisibleIndex2)及其值(Value1和Value2)的信息。
             * 若要提供自定义合并逻辑,请将Handled属性设置为true,并使用Merge属性指定是否应合并当前处理的单元格。如           果合并单元格,则结果单元格值等于Value1。
             
             *注意:行合并后,会无法选定焦点行,焦点行失效,不出现焦点行,也无法选定当前行上屏修改数据
              */
             string sFiledName = "";//当前单元格所在列的列名定义
             sFiledName = ((GridViewEditDataColumn)e.Column).FieldName;//由于e.Column继承GridViewEditDataColumn父类,所以强转成父类然后调用FieldName即可获取列名

             if (lMergeFileds.Contains(sFiledName))//lMergeFileds:List集合,即需要合并列的列名集合,sFiledName:当前单元格所在列名
             {
                 int iFirst_Row = e.RowVisibleIndex1;//当前行的行号
                 int iSecond_Row = e.RowVisibleIndex2;//下一行的行号
                 object oFirst_Value = e.Value1;//当前行单元格的值
                 object oSecond_Value = e.Value2;//下一行单元格的值
                 object oYwbh_First = ASPxGridView1.GetRowValues(iFirst_Row, sMergeByKey);//获取当前行关键列的单元格的值,注:关键列是指依据哪列进行合并的列名(字符型)
                 object oYwbh_Second = ASPxGridView1.GetRowValues(iSecond_Row, sMergeByKey);//获取第二行关键列的单元格的值,注:关键列是指依据哪列进行合并的列名(字符型)

                 if (oYwbh_First.Equals(oYwbh_Second))//当第一行业务编号与第二行业务编号相同时
                 {
                     if (oFirst_Value.Equals(oSecond_Value))//当第一行单元格的值与第二行单元格的值相同时
                     {
                         e.Merge = true;//合并
                     }
                     else//当第一行单元格的值与第二行单元格的值不相同时
                     {
                         e.Merge = false;//不合并
                     }
                 }
                 else//当第一行业务编号与第二行业务编号不相同时
                 {
                     e.Merge = false;
                 }

             }
             e.Handled = true;//关键代码:此句负责执行上面的合并,刷新客户端的表格中的合并情况
         }

秋风写淄博 业务联系与技术交流:QQ:375172665

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值