【问题标题】:Asp.net: Sorting with gridview and objectDataSource [closed]Asp.net:使用 gridview 和 objectDataSource 进行排序 [关闭]
【发布时间】:2011-02-02 15:55:42
【问题描述】:

如何使用由 ObjectDataSource 绑定的数据在 gridView 中进行排序?

【问题讨论】:

  • 很多.....................

标签: asp.net sorting objectdatasource


【解决方案1】:

Here 是之前已经回答过的问题。

对于实际的排序,你会调用

collectionOfObjects.OrderBy(x => x.PropertyToSortOn);

您可以使用开关根据通过 args 传递给方法的内容来更改排序依据。所以它看起来更像这样

switch(propertyName)
{
  case "property1":
    collectionOfObjects.OrderBy(x => x.PropertyToSortOn);
    break;
  case "property2":
    collectionOfObjects.OrderBy(x => x.OtherPropertyToSortOn);
    break;

  ...

}

希望这会有所帮助! :)

【讨论】:

  • 我不明白答案,我已经读过了。
  • 如果 GridView 和 ObjectDataSource 已经绑定,那么您应该采取的第一步是对 GridView 进行 AllowSorting。之后,您需要编写如何排序和连接事件处理程序的方法。
  • allowSorting = true 完成,没问题。剩下的我搞砸了 8 个小时,你能帮我更多吗
  • 您接下来需要做的是在您的代码中,将您的事件设置为使用实际进行排序的方法,如下所示:gridView.Sorting += new GridViewSortEventHandler(gridView_Sorting) ; (来自文章,顺便说一句)并确保您有可用的方法,以便事件处理程序知道您在说什么。 private void gridView_Sorting(object sender, GridViewSortEventArgs e) { //这里的排序逻辑 } (也来自上一个答案)。因此,现在当您尝试从网格视图排序时,将调用此代码,然后由您决定是否进行排序
  • 如果您需要进一步的帮助,请告诉我。它真的可以扭曲你的大脑,前几次设置这种事情。 :)
【解决方案2】:

如果对您来说更容易,为什么不尝试从存储过程或查询中对其进行排序。 也许不是最佳解决方案,但它可能更容易。

编辑

如果您想使用 gridview 控件以编程方式执行此操作,请查看以下代码:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            GridView1.DataBind();
        }


        protected void gridView_Sorting(object sender, GridViewSortEventArgs e)
        {
            DataTable dtSortTable = GridView1.DataSource as DataTable;
            if (dtSortTable != null)
            {
                DataView dvSortedView = new DataView(dtSortTable);
                dvSortedView.Sort = e.SortExpression + " " + getSortDirectionString(e.SortDirection);
                GridView1.DataSource = dvSortedView;
                GridView1.DataBind();
            }
        }

        private string getSortDirectionString(SortDirection sortDireciton)
        {
             string newSortDirection = String.Empty;
             if (sortDireciton == SortDirection.Ascending)
            {
                newSortDirection = "ASC";
            }
            else
            {
                newSortDirection = "DESC";
            }
            return newSortDirection;
        }

【讨论】:

  • 但是我怎样才能通过点击在那里排序和事件?
  • 也许可以使用下拉 ala AMAZON,并在 OnSelectedIndexChanged 上重新加载页面,将下拉列表的选定值作为要对查询进行排序的字段发送,这不是 ajax 优雅的...但它可能会起作用,并且很容易让您的用户理解
猜你喜欢
  • 2010-11-03
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 2010-11-03
  • 2017-12-14
  • 1970-01-01
相关资源
最近更新 更多