如何改變DataTable裡欄位的順序
在這裡講到改變欄位順序並不是用在要放入GridView裡
而是我們自己寫了一個DLL,可以直接將DataTable匯出成Excel用的
今天早上同事問了我一個問題,如何改變DataTable裡欄位的順序
在這裡講到改變欄位順序並不是用在要放入GridView裡
而是我們自己寫了一個DLL,可以直接將DataTable匯出成Excel用的
如果不將DataTable的欄位順序作改變,匯出到Excel的欄位排序就會依照DataTable的順序來排
所以改變欄位的順序是有這個必要的
首先
在DataTable裡,改變欄位順序的方式可以用下列的方法來處理
objDt.Columns["欄位名稱"].SetOrdinal(1);
這個語法可以將指定的欄位放到指定的順序上
所以我大概改了一下程式,作出一個可以讓大家共用的function
請參考下列程式碼:
public static void ReOrderTableColumn(DataTable objDt, string[] strNewColumnsOrder)
{
objDt.PrimaryKey = null;
for (int i = 0; i < strNewColumnsOrder.Length; i++)
objDt.Columns[strNewColumnsOrder[i]].SetOrdinal(i);
int intCount = objDt.Columns.Count;
for (int i = strNewColumnsOrder.Length; i < intCount; i++)
objDt.Columns.RemoveAt(strNewColumnsOrder.Length);
}
這樣一來,當我希望要進行資料表欄位的排序,只要照下列的方式去作就可以了
DataTable objDt = ...取得資料表;
string[] strColumns = {"欄位1", "欄位2", "欄位3"};
ReOrderTableColumn(objDt, strColumns);
這樣欄位就會依照"欄位1", "欄位2", "欄位3"的順序作排序了