Dato che non hai mostrato il codice completo, è difficile dire cosa c'è di sbagliato. Ma questo dovrebbe funzionare:
public static void ReorderTable(ref DataTable table, params String[] columns)
{
if (columns.Length != table.Columns.Count)
throw new ArgumentException("Count of columns must be equal to table.Column.Count", "columns");
for (int i = 0; i < columns.Length; i++)
{
table.Columns[columns[i]].SetOrdinal(i);
}
}
Invece di un params String[]
si potrebbe anche utilizzare un List<DataColumn>
o che altro si preferisce.
testati con i dati di esempio:
var table = new DataTable();
table.Columns.Add("column1", typeof(string));
table.Columns.Add("column2", typeof(string));
table.Columns.Add("column3", typeof(string));
table.Columns.Add("column4", typeof(string));
table.Columns.Add("column5", typeof(string));
table.Columns.Add("column6", typeof(string));
table.Columns.Add("column7", typeof(string));
table.Columns.Add("column8", typeof(string));
table.Columns.Add("column9", typeof(string));
table.Columns.Add("column10", typeof(string));
for (int i = 0; i < 10; i++)
{
table.Rows.Add("colum1", "column2", "colum3", "column4", "column5", "column6", "column7", "column8", "column9", "column10");
}
ReorderTable(ref table, "column4", "column2", "column1", "column7", "column6", "column9", "column10", "column5", "column8", "column3");
lavora già con .NET conteggio 2.
perché vuoi riordinare nel datatable? – Shyju
se questo è per visualizzare la tabella da qualche parte allora probabilmente troverai che la maggior parte (tutti) dei modi standard di mostrarlo ti permetterà di impostare quale ordine mostrare le colonne in ... – Chris
possibile duplicato di [Come modificare le colonne DataTable ordine] (http://stackoverflow.com/questions/3757997/how-to-change-datatable-colums-order) –