如何更改DataTable列的顺序 [英] How to change DataTable columns order
问题描述
示例:
我创建了sql表类型顺序是数量,单位,ID,但在程序DataTable顺序是Id,数量,单位。在代码中,我直接将DataTable传递给sql表类型,因此表的顺序是不同的。
DataTable列是: ,Unit.`我想要这样做:'数量,单位,Id'
请帮助
尝试使用 DataColumn.SetOrdinal 方法。例如:
dataTable.Columns [Qty] SetOrdinal(0);
dataTable.Columns [Unit]。SetOrdinal(1);
更新:这个答案比我预期的更受关注。为了避免混淆,使用起来更方便我决定在DataTable中创建列排序的扩展方法:
扩展方法
public static class DataTableExtensions
{
public static void SetColumnsOrder(此DataTable表,params String [] columnNames)
{
int columnIndex = 0;
foreach(columnNames中的var columnName)
{
table.Columns [columnName] .SetOrdinal(columnIndex);
columnIndex ++;
}
}
}
用法: / strong>
table.SetColumnsOrder(Qty,Unit,Id);
或
table.SetColumnsOrder(new string [] {Qty,Unit,Id});
How to change Datatable columns order in c#.
Example:
am created sql table type order is Qty,Unit,Id but in program DataTable order is Id,Qty,Unit. In code Behind am directly pass DataTable to sql table type so the table order is different.
DataTable columns are: `Id,Qty,Unit.` I want this to be: `Qty,Unit,Id`
Please help
Try to use the DataColumn.SetOrdinal method. For example:
dataTable.Columns["Qty"].SetOrdinal(0);
dataTable.Columns["Unit"].SetOrdinal(1);
UPDATE: This answer received much more attention than I expected. To avoid confusion and make it easier to use I decided to create an extension method for column ordering in DataTable:
Extension method:
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++;
}
}
}
Usage:
table.SetColumnsOrder("Qty", "Unit", "Id");
or
table.SetColumnsOrder(new string[]{"Qty", "Unit", "Id"});
这篇关于如何更改DataTable列的顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!