对ADO.NET DataTable进行排序

3
我有一个在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();

但是它会产生索引越界异常。


这将取决于您的数据表列长度。您的数据表包含多少列? - Sai Kalyan Kumar Akshinthala
代码中有8列,正如我所给出的。 - asma
3个回答

5
您错过了“Sort”属性实际上是什么。
它是您想要排序的表达式。一个字符串值,而不是列的索引。您的代码尝试读取假定存在的排序字符串中的第六个字符,而不再多说!
请使用
dtClientMedications.DefaultView.Sort = "SortOrder";

在数据绑定之前。
gdvMainList.DataSource = dtClientMedications.DefaultView; // You may not need to mention view
gdvMainList.DataBind();

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

本文介绍了关于it技术的相关内容,涉及到数据视图排序。如果您想深入研究此主题,请参考上述链接。


可以将DataView分配给GridView作为数据源吗?就像我用DataTable一样。 - asma
是的,我认为应该如此。虽然我已经有一段时间没有做这个了,但是我认为分配任何一个都会类似,因为它本来就是一个“默认”视图。请看答案中更新的代码。 - Meligy
工作完美。谢谢Mohamed Meligy。 - asma

1

Sort 是字符串属性。

使用,

dtClientMedications.DefaultView.Sort="ID"

数据源不需要支持排序方法吗? - McArthey
@asma:针对你的第一个评论,是的,请使用 ...Sort="SortOrder" - Josh Darnell

1

您可以在表格本身中对列进行排序:

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

我想按照SortOrder对所有列甚至整个数据表进行排序。 - asma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接