gridview模型绑定和排序

时间:2014-01-27 15:28:05

标签: c# asp.net

我在页面上有以下GridView,我使用模型绑定来获取数据。

                <asp:GridView ID="grdvAppType" DataKeyNames="ApplicationTypeSeqid" runat="server" ItemType="MyType.ApplicationType"
                AutoGenerateColumns="false" SelectMethod="GetAppliationTypes" AllowPaging="true" PageSize="10" AllowSorting="true">
                <EmptyDataTemplate>
                    No records
                </EmptyDataTemplate>
                <Columns>
                    <asp:TemplateField HeaderText="Type Name" SortExpression="TypeName">
                        <ItemTemplate>
                            <%# Item.TypeName %>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>

还有其他专栏,但我已将其删除。后面的代码将SelectMethod设置为:

        public List<MyType.ApplicationType> GetAppliationTypes(int startRowIndex, int maximumRows, out int totalRowCount)
    {
        List<MyType.ApplicationType> lstAppType = null;
        using (ApplicationTypeRepository appTypeRepos = new ApplicationTypeRepository(new UnitOfWork()))
        {
            totalRowCount = appTypeRepos.All.Where(x => x.isActive).Count();
            var data = appTypeRepos.All.Where(x => x.isActive).OrderBy(x => x.TypeName).Skip(startRowIndex).Take(maximumRows);
            lstAppType = data.ToList();
        }

        return lstAppType;
    }

这很好,因为我只检索每页所需的记录,而不是每次从一个页面移动到另一个页面时获取所有数据。但我不确定如何使用排序,例如,如果我希望TypeName列可以排序。我需要在SelectMethod中查找什么来查看选择了哪个选项进行排序,如果没有选择它,它应该默认为TypeName?

2 个答案:

答案 0 :(得分:0)

在WPF中,我使用DataGrid进行自动排序,它对我来说很好,但我不知道它是否也适用于ASP.NET。我也找到了这篇文章,看看它,我认为这是你正在寻找的。希望能帮助到你!  http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.allowsorting(v=vs.110).aspx

答案 1 :(得分:0)

SelectMethod调用还有一个名为“sortExpression”的参数。它将为您提供正在排序的字段。

public List<MyType.ApplicationType> GetAppliationTypes(string sortExpression, 
                   int startRowIndex, int maximumRows, out int totalRowCount)