当前位置: 代码迷 >> 综合 >> Dev ASPxGridView 根据关键列分组合并单元格
  详细解决方案

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

热度:68   发布时间:2024-01-24 15:18:28.0

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