ลองใช้เมธอดDataColumn.SetOrdinal ตัวอย่างเช่น:
dataTable.Columns["Qty"].SetOrdinal(0);
dataTable.Columns["Unit"].SetOrdinal(1);
UPDATE:คำตอบนี้ได้รับความสนใจมากกว่าที่ฉันคาดไว้ เพื่อหลีกเลี่ยงความสับสนและทำให้ใช้งานได้ง่ายขึ้นฉันตัดสินใจสร้างวิธีการขยายสำหรับการสั่งซื้อคอลัมน์ใน DataTable:
วิธีการขยาย:
public static class DataTableExtensions
{
public static void SetColumnsOrder(this DataTable table, params String[] columnNames)
{
int columnIndex = 0;
foreach(var columnName in columnNames)
{
table.Columns[columnName].SetOrdinal(columnIndex);
columnIndex++;
}
}
}
การใช้งาน:
table.SetColumnsOrder("Qty", "Unit", "Id");
หรือ
table.SetColumnsOrder(new string[]{"Qty", "Unit", "Id"});