gridcontrol根据列合并后打印预览会有点问题,在翻页后偶尔会多显示一行。因为之前合并的方法是把这其余几行全部附加到第一行。被合并的那几行本来有内容没有删掉才导致这样。所以需要把这些内容删掉。各种问题太多,还是在绑定数据之前修改datatable好了。
System.Data.DataTable dt = new System.Data.DataTable();
string current3 = string.Empty; string current4 = string.Empty; int current5 = 0; int firstIndex = 0; //每次合并后的第一行行号 for (int i = 0; i < dt.Rows.Count; i++) {
string biaoti3_1 = dt.Rows[i]["三级标题"].ToString(); if ( biaoti3_1!= current3) 当开始有新的合并区域时 { //MessageBox.Show(currentbiaoti4); if (i != 0) dt.Rows[firstIndex]["题目"] = dt.Rows[firstIndex]["三级标题"] + "\n" + current4; //除去第一行异常情况 current4 = dt.Rows[i]["题目"].ToString(); if (i != 0) dt.Rows[firstIndex]["分值"] = current5; //除去第一行异常情况
current5 = Convert.ToInt32(dt.Rows[i]["分值"]); current3 = biaoti3_1; firstIndex = i; } else { current4 = current4 + "\n" + dt.Rows[i]["题目"].ToString(); //三级标题这一列内容相同时逐行累加 current5 += Convert.ToInt32(dt.Rows[i]["分值"]); dt.Rows[i]["题目"] = string.Empty; //保证只有合并的第一行有内容 dt.Rows[i]["分值"] = string.Empty; //保证只有合并的第一行有内容
} if (i == dt.Rows.Count - 1) //把最后一行添上 { dt.Rows[firstIndex]["题目"] = dt.Rows[firstIndex]["三级标题"] + "\n" + current4; dt.Rows[firstIndex]["分值"] = current5; }
}
这样也实现
原文地址:https://www.cnblogs.com/chenxiya/p/10289211.html
时间: 2024-11-07 08:50:44