我用的gridview分页功能实现了,但是排序还不行哦,大家看看怎么搞?》<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" PageSize="5" Height="301px" Width="439px"
DataKeyNames="balance" AllowSorting="true" OnSorting="GridView1_Sorting">
<Columns>
<asp:BoundField DataField="Id" HeaderText="编号" SortExpression="Id" />
<asp:TemplateField HeaderText="用户名" SortExpression="UserName">
<ItemTemplate>
<a href="gd_showuserinfo.aspx?username=<%# Eval("username") %>"><%# Eval("username") %></a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="TrueName" HeaderText="真实姓名" SortExpression="TrueName" />
<asp:BoundField DataField="Provinces" HeaderText="所在省市" SortExpression="Provinces" />
<asp:TemplateField HeaderText="账户余额" SortExpression="Balance">
<ItemTemplate>
<a href="gd_showbalance.aspx?username=<%# Eval("UserName") %>"><%# Eval("Balance")%></a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="会员等级" SortExpression="MemberGrade">
<ItemTemplate>
<a href="gd_showmembergrade.aspx?UserName=<%# Eval("UserName") %>"><%# Eval("MemberGrade")%></a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerTemplate>
<asp:LinkButton CommandName="Page" CommandArgument="First" ID="btnFirst" runat="server" ><< 首页</asp:LinkButton>
<asp:LinkButton CommandName="Page" CommandArgument="Prev" ID="btnPrev" runat="server">< 上一页</asp:LinkButton>
[当前<%= GridView1.PageIndex * GridView1.PageSize+1 %> - <%= GridView1.PageIndex * GridView1.PageSize + GridView1.PageSize%>]
<asp:LinkButton CommandName="Page" CommandArgument="Next" ID="BtnNext" runat="server" >下一页 ></asp:LinkButton>
<asp:LinkButton CommandName="Page" CommandArgument="Last" ID="btnLast" runat="server">末页 >></asp:LinkButton>
</PagerTemplate>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAllUsers"
TypeName="GraduationProject.BLL.UserManager"></asp:ObjectDataSource>
下面是后台的代码: protected void Page_Load(object sender, EventArgs e)
{
ViewState["sortColumn"]= "balance";
ViewState["sortDirection"]= "ASC";
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
this.GridView1.EditIndex = -1;
//判断viewstate中的排序字段,在这之前要在page_load里初始化ViewState["sortColumn"]与ViewState["sortDirection"]
if (ViewState["sortColumn"].ToString() == e.SortExpression.ToString())
{
if ("ASC" == ViewState["sortDirection"].ToString())
{
ViewState["sortDirection"]= "DESC";
}
else
{
ViewState["sortDirection"]= "ASC";
} }
else
{
ViewState["sortColumn"]= e.SortExpression.ToString();
ViewState["sortDirection"]= "ASC";
} }
DataKeyNames="balance" AllowSorting="true" OnSorting="GridView1_Sorting">
<Columns>
<asp:BoundField DataField="Id" HeaderText="编号" SortExpression="Id" />
<asp:TemplateField HeaderText="用户名" SortExpression="UserName">
<ItemTemplate>
<a href="gd_showuserinfo.aspx?username=<%# Eval("username") %>"><%# Eval("username") %></a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="TrueName" HeaderText="真实姓名" SortExpression="TrueName" />
<asp:BoundField DataField="Provinces" HeaderText="所在省市" SortExpression="Provinces" />
<asp:TemplateField HeaderText="账户余额" SortExpression="Balance">
<ItemTemplate>
<a href="gd_showbalance.aspx?username=<%# Eval("UserName") %>"><%# Eval("Balance")%></a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="会员等级" SortExpression="MemberGrade">
<ItemTemplate>
<a href="gd_showmembergrade.aspx?UserName=<%# Eval("UserName") %>"><%# Eval("MemberGrade")%></a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerTemplate>
<asp:LinkButton CommandName="Page" CommandArgument="First" ID="btnFirst" runat="server" ><< 首页</asp:LinkButton>
<asp:LinkButton CommandName="Page" CommandArgument="Prev" ID="btnPrev" runat="server">< 上一页</asp:LinkButton>
[当前<%= GridView1.PageIndex * GridView1.PageSize+1 %> - <%= GridView1.PageIndex * GridView1.PageSize + GridView1.PageSize%>]
<asp:LinkButton CommandName="Page" CommandArgument="Next" ID="BtnNext" runat="server" >下一页 ></asp:LinkButton>
<asp:LinkButton CommandName="Page" CommandArgument="Last" ID="btnLast" runat="server">末页 >></asp:LinkButton>
</PagerTemplate>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAllUsers"
TypeName="GraduationProject.BLL.UserManager"></asp:ObjectDataSource>
下面是后台的代码: protected void Page_Load(object sender, EventArgs e)
{
ViewState["sortColumn"]= "balance";
ViewState["sortDirection"]= "ASC";
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
this.GridView1.EditIndex = -1;
//判断viewstate中的排序字段,在这之前要在page_load里初始化ViewState["sortColumn"]与ViewState["sortDirection"]
if (ViewState["sortColumn"].ToString() == e.SortExpression.ToString())
{
if ("ASC" == ViewState["sortDirection"].ToString())
{
ViewState["sortDirection"]= "DESC";
}
else
{
ViewState["sortDirection"]= "ASC";
} }
else
{
ViewState["sortColumn"]= e.SortExpression.ToString();
ViewState["sortDirection"]= "ASC";
} }
解决方案 »
- 请问jquery.validate怎样验证输入的姓名,并提示,但不限制提交表单.
- ◆Sys.WebForms.PageRequestManagerServerErrorException问题◆
- 请教一个权限判断的问题
- 无限级分类管理有否好的建议
- 有没有这种码的转换工具?%E7%94%98%E9%9C%B2%E5%9B%AD
- iis用命令配制问题
- 50分,谁有eWebEditor V4.6的无限版本共享一把!!
- 怎样将Html代码转换为aspx服务器控件
- 大家来讨论讨论。
- asp.net Web应用程序发布后登录不进去
- ASPNET MVC 小说网站开源啦,顶也有分~~
- 未能加载类型“Handler”。
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAllUsers"
TypeName="GraduationProject.BLL.UserManager"></asp:ObjectDataSource>所以我点击排序的时候,就出错误了数据源“ObjectDataSource1”不支持 IEnumerable 数据的排序。只对 DataView、DataTable 和 DataSet 支持自动排序。
数据源“ObjectDataSource1”不支持 IEnumerable 数据的排序。只对 DataView、DataTable 和 DataSet 支持自动排序。
所以解决方法我认为可以有两种第一是在GetAllUsers方法底下返回dataTable
你以前是把数据封装到实体类里面,你不封装直接得数据就可以了第二是不用objectDateSource,改用LinqDataSource
使用LinqDataSource连排序的代码都不用写了参考
Stutent[] students;
protected void Page_Load(object sender, EventArgs e)
{
students = new Stutent[]{
new Stutent("shaka",22,"男"),
new Stutent("shaka",12,"男"),
new Stutent("romeo",34,"男"),
new Stutent("rose",45,"女"),
new Stutent("ruby",67,"女"),
new Stutent("kevin",23,"男"),
new Stutent("jordan",22,"男")
};
}
protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
e.Result = students;
}不管你封装的是泛型或者数组都可以
http://download.csdn.net/source/1068761
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GraduationProject.BLL;
public partial class Admin_gd_showuser : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.GridView1.DataSource = UserManager.GetAllUsers();
this.GridView1.DataBind();
ViewState["sortColumn"] = "balance";
ViewState["sortDirection"] = "DESC";
}
} protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
this.GridView1.EditIndex = -1;
//判断viewstate中的排序字段,在这之前要在page_load里初始化ViewState["sortColumn"]与ViewState["sortDirection"]
if (ViewState["sortColumn"].ToString() == e.SortExpression.ToString())
{
if ("ASC" == ViewState["sortDirection"].ToString())
{
ViewState["sortDirection"] = "DESC";
}
else
{
ViewState["sortDirection"] = "ASC";
}
this.GridView1.DataSource = UserManager.GetAllUsersByStr(ViewState["sortColumn"].ToString(), ViewState["sortDirection"].ToString());
this.GridView1.DataBind();
}
else
{
ViewState["sortColumn"] = e.SortExpression.ToString();
ViewState["sortDirection"] = "ASC";
this.GridView1.DataSource = UserManager.GetAllUsersByStr(ViewState["sortColumn"].ToString(), ViewState["sortDirection"].ToString());
this.GridView1.DataBind();
} }
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
this.GridView1.DataSource = UserManager.GetAllUsers();
this.GridView1.DataBind();
}
}
我后台改成这样的代码就可以排序了,但是点击下一页,它又变回了原来的顺序……