如何更改DataTable列的顺序 [英] How to change DataTable columns order

查看:520
本文介绍了如何更改DataTable列的顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



示例:



我创建了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆