1

有没有一种简单的方法可以反转下拉列表的默认顺序?

if (_group.Category == GroupCategory.Workers || 
    _group.Category == GroupCategory.Acct)
{
      this.cboList.DataSource = null;
      this.cboList.DisplayMember = "DescForMCE";
      this.cboList.ValueMember = "ID";
      this.cboList.DataSource = _ch.Accounts;
      this.cboList.Visible = true;
      this.lblList.Visible = true;
}
4

3 回答 3

6

您可以在绑定之前反转数据源的顺序。

if (_group.Category == GroupCategory.Workers || 
    _group.Category == GroupCategory.Acct)
{
      this.cboList.DataSource = null;
      this.cboList.DisplayMember = "DescForMCE";
      this.cboList.ValueMember = "ID";
      this.cboList.DataSource = _ch.Accounts.Reverse();
      this.cboList.Visible = true;
      this.lblList.Visible = true;
}

根据您的数据源集合的确切类型和 .NET 版本,它可能不像上面的示例那么简单,它假设数据源实现IEnumerable<T>并可以直接使用Reverse()扩展方法[MSDN]

例如,如果您只有一个IEnumerable(非通用版本),您仍然可以使用Cast<T>()[MSDN]在两个调用中完成:

collection.Cast<YourType>().Reverse();

或者您的集合类可能有自己的实现Reverse(),例如List<T>[MSDN]Array[MSDN]

于 2013-06-13T14:56:21.653 回答
1

正如其他朋友建议的那样,最好按降序获取数据,然后简单地将其绑定到您可能希望的任何控件。这是一个存储过程和一个 LINQ 查询,可根据需要提供数据:

Linq 查询:

var queru = new DatabaseContext().Cities.OrderByDescending(s => s.CityID).ToList();

和 SP:

SELECT * FROM Roles
ORDER BY RoleID DESC

希望能帮助到你,

于 2013-06-13T15:10:11.417 回答
0

在将其放入下拉列表之前,您可以将用于数据源的数据反转。

使用.Reverse。

于 2013-06-13T14:58:19.223 回答