对ADO.NET数据表进行排序

时间:2011-09-06 05:31:58

标签: c# asp.net sorting gridview datatable

我在C#中有一个数据表。

DataTable dtClientMedications = new DataTable();
dtClientMedications.Columns.Add("Id");
dtClientMedications.Columns.Add("MedId");
dtClientMedications.Columns.Add("BrandName");
dtClientMedications.Columns.Add("GenericName");
dtClientMedications.Columns.Add("Type");
dtClientMedications.Columns.Add("Dosage");
dtClientMedications.Columns.Add("Status");
dtClientMedications.Columns.Add("SortOrder");

我想按SortOrder&列排序。将其分配给gridview。我用过这个:

gdvMainList.DataSource = dtClientMedications.DefaultView.Sort[7];//dtClientMedications;
gdvMainList.DataBind();

但它使索引超出约束范围。

3 个答案:

答案 0 :(得分:3)

您遗漏了Sort属性的实际内容。

这是您要排序的表达式。 string值,而不是列索引。您的代码尝试阅读假定的现有排序char中的第6个string,不再有!

使用

dtClientMedications.DefaultView.Sort = "SortOrder";

在数据绑定之前。

gdvMainList.DataSource = dtClientMedications.DefaultView; // You may not need to mention view
gdvMainList.DataBind();

文档:http://msdn.microsoft.com/en-us/library/system.data.dataview.sort.aspx

答案 1 :(得分:1)

Sort是字符串属性。

使用,

dtClientMedications.DefaultView.Sort="ID"

答案 2 :(得分:1)

您可以对表格中的列进行排序:

dtClientMedications.Columns["SortOrder"].SetOrdinal(0);