c# - How to Merge DataGridView Cell in Winforms -
i have data in grid displays this:
------------------ |hd1| value | ------------------ |a | a1 | ------------------ |a | a2 | ------------------ |a | a3 | ------------------ |a | a4 | ------------------ |b | b1 | ------------------ |b | b2 | ------------------ |b | b3 | ------------------ |b | b4 | ------------------ |b | b5 | ------------------ |c | c1 | ------------------ |c | c2 | ------------------
i want make this:
|hd | value | ------------------ |a | a1 | ---------- | | a2 | ---------- | | a3 | ---------- | | a4 | ------------------ |b | b1 | ---------- | | b2 | ---------- | | b3 | ---------- | | b4 | ---------- | | b5 | ------------------ |c | c1 | ---------- | | c2 | ------------------
is there way can merge these cells? have tried in many ways google did not find suitable way. if possible showing data way without using datagridview result way have showed, solve problem.
you must first find duplicate values
need 2 methods:
bool isthesamecellvalue(int column, int row) { datagridviewcell cell1 = datagridview1[column, row]; datagridviewcell cell2 = datagridview1[column, row - 1]; if (cell1.value == null || cell2.value == null) { return false; } return cell1.value.tostring() == cell2.value.tostring(); }
in event, cellpainting:
private void datagridview1_cellpainting(object sender, datagridviewcellpaintingeventargs e) { e.advancedborderstyle.bottom = datagridviewadvancedcellborderstyle.none; if (e.rowindex < 1 || e.columnindex < 0) return; if (isthesamecellvalue(e.columnindex, e.rowindex)) { e.advancedborderstyle.top = datagridviewadvancedcellborderstyle.none; } else { e.advancedborderstyle.top = datagridview1.advancedcellborderstyle.top; } }
now in cell formatting:
if (e.rowindex == 0) return; if (isthesamecellvalue(e.columnindex, e.rowindex)) { e.value = ""; e.formattingapplied = true; }
and in form_load:
datagridview1.autogeneratecolumns = false;
Comments
Post a Comment