1. 程式人生 > >datatable 根據某一列數據來控制其他列合並

datatable 根據某一列數據來控制其他列合並

開始 data i++ datatable 需要 最後一行 其余 tab 根據

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

  這樣也實現

datatable 根據某一列數據來控制其他列合並