datatable 根據某一列數據來控制其他列合並
阿新 • • 發佈:2019-01-18
開始 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 根據某一列數據來控制其他列合並