摘要:[C#] Datatble排序 + DataView轉換為DataTable
private void sort()
{
DataTable dt = new DataTable();
dt.Columns.Add("Column_1", typeof(string));
dt.Columns.Add("Column_2", typeof(string));
dt.Columns.Add("Column_3", typeof(string));
dt.Columns.Add("Column_4", typeof(int));
dt.Rows.Add("4", "四", "D", 4);
dt.Rows.Add("1", "二", "C", 1);
dt.Rows.Add("3", "一", "B", 3);
dt.Rows.Add("2", "三", "A", 2);
dt.Rows.Add("11", "一一", "ELEVEN", 11);
dt.Rows.Add("0", "零", "O", 0);
// 利用DataTable的DefaultView來做排序
dt.DefaultView.Sort = "Column_4 ASC";
// 但是此排序並非dt實際排序...須轉換
DataTable tempDT = CreateTable(dt.DefaultView);
GridView1.DataSource = tempDT;
GridView1.DataBind();
}
// 把DataView轉換為DataTabl
public DataTable CreateTable(DataView obDataView)
{
if (null == obDataView)
{
throw new ArgumentNullException
("DataView", "Invalid DataView object specified");
}
DataTable obNewDt = obDataView.Table.Clone();
int idx = 0;
string[] strColNames = new string[obNewDt.Columns.Count];
foreach (DataColumn col in obNewDt.Columns)
{
strColNames[idx++] = col.ColumnName;
}
IEnumerator viewEnumerator = obDataView.GetEnumerator();
while (viewEnumerator.MoveNext())
{
DataRowView drv = (DataRowView)viewEnumerator.Current;
DataRow dr = obNewDt.NewRow();
try
{
foreach (string strName in strColNames)
{
dr[strName] = drv[strName];
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
obNewDt.Rows.Add(dr);
}
return obNewDt;
}
Y2J's Life:http://kimenyeh.blogspot.tw/