您的位置:首页 > 博客中心 > 互联网 >

datatable 根据某一列数据来控制其他列合并

时间:2022-05-07 06:40

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;
}
}
    

  这样也实现

本类排行

今日推荐

热门手游