Asp.net 我正在使用列表对gridview数据进行排序,获取“数据源不支持服务器端数据分页”错误。@jordanArron
aspx文件的代码: cs文件的代码:Asp.net 我正在使用列表对gridview数据进行排序,获取“数据源不支持服务器端数据分页”错误。@jordanArron,asp.net,gridview,Asp.net,Gridview,aspx文件的代码: cs文件的代码: <asp:GridView ID="GridPayCondition" Width="750px" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" CellPadding="4" AllowSorting="True" OnRowDataBound="
<asp:GridView ID="GridPayCondition" Width="750px" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" CellPadding="4" AllowSorting="True" OnRowDataBound="GridPayCondition_RowDataBound" AllowPaging="True" OnPageIndexChanging="GridPayCondition_PageIndexChanging" OnSorting="GridPayCondition_Sorting" >
错误:
数据源不支持服务器端数据分页
原因:
解决方案:
原因:
不能使用IQueryable对象将数据绑定到GridView和
仍然使用分页和排序。必须将列表返回到GridView
使用ToList方法
jordanArron请帮助我,我指的是你的帖子。我是乞丐,所以无法理解这个例外,所以通常不会向特定的人寻求帮助;相反,请链接到您需要的任何上下文问题,或者最好只是解释您需要什么,以便任何具有足够专业知识的人都可以回答。我对stackoverflow完全陌生,因此感谢您的指导。Thank@suprabhat错误已解决,但在本代码中,排序仅第一次完成,而不是下一次。你能再帮我一次吗?不,没有这样的错误,但不能做我想做的事。我想在单击gridview的标题后对数据进行排序,但在第二次单击时,标题排序未完成。原因应该是什么?您是否能够调用GridPayCondition\u排序事件。请尝试在此方法中添加断点。ifstring ViewState[SortDirection]==deschere我忘了执行类型转换,因此字符串很重要。
protected void GridPayCondition_Sorting(object sender, GridViewSortEventArgs e)
{
List<PayCondition> paycondition = new List<PayCondition>();
EditPayConditionLogic epcLogic = new EditPayConditionLogic();
paycondition = epcLogic.GetPayCondition();
if(paycondition!=null)
{
var param = Expression.Parameter(typeof(PayCondition), e.SortExpression);
var sortExpression = Expression.Lambda<Func<PayCondition, object>>(Expression.Convert(Expression.Property(param, e.SortExpression), typeof(object)), param);
if(ViewState["SortDirection"]=="DESC")
{
ViewState["SortDirection"] = "ASC";
GridPayCondition.DataSource = paycondition.AsQueryable<PayCondition>().OrderBy(sortExpression);
}
else
{
ViewState["SortDirection"] = "DESC";
GridPayCondition.DataSource = paycondition.AsQueryable<PayCondition>().OrderByDescending(sortExpression);
}
GridPayCondition.DataBind();
}
}
GridPayCondition.DataSource = paycondition.AsQueryable<PayCondition>().OrderBy(sortExpression);
GridPayCondition.DataSource = paycondition.AsQueryable<PayCondition>().OrderBy(sortExpression).ToList();
protected void GridPayCondition_Sorting(object sender, GridViewSortEventArgs e)
{
List<PayCondition> paycondition = new List<PayCondition>();
EditPayConditionLogic epcLogic = new EditPayConditionLogic();
paycondition1 = epcLogic.GetPayCondition();
if (paycondition1 != null)
{
var param = Expression.Parameter(typeof(PayCondition),e.SortExpression);
var sortExpression = Expression.Lambda<Func<PayCondition, object>>(Expression.Convert(Expression.Property(param, e.SortExpression), typeof(object)), param);
if ((string)ViewState["SortDirection"] == "DESC")
{
ViewState["SortDirection"] = "ASC";
GridPayCondition.DataSource = paycondition1.AsQueryable<PayCondition>().OrderBy(sortExpression).ToList();
}
else
{
ViewState["SortDirection"] = "DESC";
GridPayCondition.DataSource = paycondition1.AsQueryable<PayCondition>().OrderByDescending(sortExpression).ToList();
}
GridPayCondition.DataBind();
}