Asp.net 我正在使用列表对gridview数据进行排序,获取“数据源不支持服务器端数据分页”错误。@jordanArron

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="

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="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();
       }