c#-ASP.NET MVC 3自定义对WebGrid进行升序和降序排序

喂,
我正在研究ASP.NET MVC 3应用程序.

我有一个观点

var grid = new WebGrid(rowsPerPage: 10, ajaxUpdateContainerId: "GridDiv",canPage: true,canSort: true);
grid.Bind(source: Model);
grid.Pager(WebGridPagerModes.All);
@grid.GetHtml(htmlAttributes: new { id="grid" },
    columns: grid.Columns(
    grid.Column("Name"),
    grid.Column("Age"),
    grid.Column("Sex")
)

在控制器中,我有一个自定义的排序算法来对数据进行排序.
我既有定制的升序排序又有定制的降序排序.

我想要当用户单击列标题以按照我的自定义排序算法而不是内置算法对行进行排序时.

为此,我尝试了以下操作(我使用“ sortdir”并进行相应的处理)

控制者

public ActionResult Persons(string sortdir)
{    
    PersonsListModel = GetAllPersonsList();
    if(sortdir=="ASC")
        return View(MyAscendingCustomSortAlgorithm(PersonsListModel ));
    else
        return View(MyDescendingCustomSortAlgorithm(PersonsListModel ));
}

MyAscendingCustomSortAlgorithm和MyDescendingCustomSortAlgorithm是返回按我的自定义算法排序的列表的函数.

当页面加载时,列表会正确排序,但是当我单击标题时,排序就搞砸了.我调试了之后,一切工作正常.

我的问题是我该如何工作,并仍然保持正确的分页

我还尝试将canSort:false设置为,但之后我无法再单击标题.

非常感谢您的帮助

解决方法:

您是否尝试过关闭Bind()方法中的autoSortAndPage参数?

grid.Bind(source: Model, autoSortAndPage : false);

我知道您想保留现有的分页,但是我不确定是否有两种方法都可以.您可能需要在操作方法中手动进行分页.

上一篇:PHP usort的有害行为


下一篇:PHP-Yii CListView beforeAjaxUpdate函数签名