c#行轉列 今天工作中,恰好寫到此處,想起之前第一次行轉列的時候,卡殼了好久,今天正好碰上,故而花費幾分鐘,整理成案例,分享到博客上。 這是個很簡單的功能,第一次可以使用案例,後面最好能達到信手拈來的地步。 開發要素第一步: 各種控制項的命名要改:這個跟技術能力無關,工作再趕再忙,這個也必須要改,因為 ...
c#行轉列
今天工作中,恰好寫到此處,想起之前第一次行轉列的時候,卡殼了好久,今天正好碰上,故而花費幾分鐘,整理成案例,分享到博客上。
這是個很簡單的功能,第一次可以使用案例,後面最好能達到信手拈來的地步。
開發要素第一步:
各種控制項的命名要改:這個跟技術能力無關,工作再趕再忙,這個也必須要改,因為改這個會為後面開發省去很多時間。不要覺得改這個是在浪費時間,開發的人員都懂,就不多說了。
demo功能簡單介紹:》初始化載入的時候,載入DGVtable, 如何點擊行轉列按鈕,將DGVtable裡面的數據,行轉列,然後綁定到DGVRowTrasCell上,就可以秀出來了。
上圖是dsTemp.Tables[0]綁定的DGVtable。也就是初始化載入的效果。
上圖是代碼部分。dsTemp.Tables[0]裡面的內容見下圖。
點擊行轉列按鈕後,見最後效果圖(如下圖)
最後,其實我不想將源碼放出來的,因為會的人根本就沒有必要看,就能信手拈來。不會的人正好藉此機會寫一下代碼增強印象(ps:勤動手,不要懶,智力不行勤來補)。但是一想到當初我初為程式員的那段孤苦無依的日子,總希望有人指點的歲月,因此還是將關鍵代碼放出來應急。切記一定要理解透徹,否則下次遇到還是不會。
public void btnRowTrasCell_Click(object sender, EventArgs e)
{//行轉列:
//1.先聲明一張表table來接收轉換後的數據
//2.用迴圈將表頭塞入table
//3.用迴圈將數據行列轉換,並塞入table
//4.將table綁定至新dgv上
DataTable table = new DataTable();//1.
for (int i = 0; i < dsTemp.Tables[0].Rows.Count; i++)
{ //2.獲取表頭:此處將第一列當成表頭
string ColName = dsTemp.Tables[0].Rows[i][0].ToString();//將每一行的第一列的值 賦值給變數
//string ColName=dsTemp.Tables[0].Rows[i]["列名欄位"].ToString(); //這種寫法也行,寫法不唯一
table.Columns.Add(ColName);//將變數塞入表頭中:這樣迴圈就獲取了表頭
}
for (int c = 1; c < dsTemp.Tables[0].Columns.Count; c++)//c:cell列的意思 r:row行的意思
{//按照列迴圈:如dgv第二列的值,恰好是table的第一行的值
DataRow dr = table.NewRow();
for (int r = 0; r < dsTemp.Tables[0].Rows.Count; r++)
{//3.獲取表列的數據
dr[r] = dsTemp.Tables[0].Rows[r][c].ToString();//獲取每一行單元格的值
}
table.Rows.InsertAt(dr, table.Rows.Count);//將寫好的行Insert進table
}
//4.綁定dgv
DGVRowTrasCell.DataSource = table;
}
*其實行轉列在sql裡面可以一步完成,這就要求對sql的熟練程度相當高。望有緣人看到這段代碼的時候,可以拓展一下,用sql實現行轉列,然後評論在上面,供後來者參考。
不說了,當誤了半小時,要去做今天的開發任務了。