UltraGrid合并.txt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 单元格合并
  2. 当使用grid列示数据时,如果某一行某列数据和上一行的对应列数据相同时,我们想把该列的显示隐含。
  3. 所有band中的所有列。
  4. this.ultraGrid1.DisplayLayout.Override.MergedCellStyle = MergedCellStyle.Always
  5. 其值还可以是:
  6. OnlyWhenSorted:只在排序时候合并
  7. Never:从不合并
  8. 也可以针对具体的列来设置,如:
  9. this.ultraGrid1.DisplayLayout.Bands[1].Columns["SpecWth"].MergedCellStyle = MergedCellStyle.Never;
  10. 合并可以按文本相同或者值相同,如:
  11. this.ultraGrid1.DisplayLayout.Bands[1].Columns["SpecWth"].MergedCellEvaluationType = MergedCellEvaluationType.MergeSameText;
  12. 但有时这种合并还是不能满足我们的要求,那我们可以自定义条件合并即可。
  13. 实现如下:
  14. public class CustomMergedCellEvaluator : IMergedCellEvaluator
  15. {
  16. UltraGridColumn[] ugcs;
  17. public CustomMergedCellEvaluator(UltraGridColumn[] keys)
  18. {
  19. this.ugcs = keys;
  20. }
  21. public bool ShouldCellsBeMerged(UltraGridRow row1, UltraGridRow row2, UltraGridColumn column)
  22. {
  23. bool keyIsSame = KeyIsSame(row1, row2, this.ugcs);
  24. if (keyIsSame == true)
  25. return row1.Cells[column].Value.ToString () == row2.Cells[column].Value.ToString();
  26. else
  27. return false;
  28. }
  29. private bool KeyIsSame(UltraGridRow row1, UltraGridRow row2, UltraGridColumn[] keys)
  30. {
  31. //定义合并的逻辑
  32. return keyIsSame;
  33. }
  34. }
  35. 这时我们在column中设置如下,即可按我们的条件合并了。
  36. ustomMergedCellEvaluator cmce = new CustomMergedCellEvaluator(new UltraGridColumn[]{ultraGrid1.DisplayLayout.Bands[1].Columns[0],ultraGrid1.DisplayLayout.Bands[1].Columns[1]});
  37. column.MergedCellEvaluator = cmce;
  38. column.MergedCellStyle = MergedCellStyle.Always;
  39. column.MergedCellEvaluationType = MergedCellEvaluationType.MergeSameText;
  40. 其实现也就如此的简单。