我在页面上有以下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?
答案 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)