2015-11-06 20 views
0
<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" > 

aspx文件的代碼:CS文件的
我使用列表獲取「數據源不支持服務器端數據分頁」的錯誤排序的GridView數據@ jordanArron

代碼:

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

     }   
+0

#jordanArron請幫助我關於你post.I上午初學者所以不能聯合國明確此異常 – ashT

+0

SO通常不會通過詢問特定人員的幫助來運作;相反,可以鏈接到任何你需要的背景問題,或者最好只是解釋你需要什麼,這樣任何有足夠專業知識的人都可以回答。 –

+0

我是完全新的stackoverflow,謝謝你的指導。 – ashT

回答

0

錯誤:

Data source does not support server-side data paging

原因:

GridPayCondition.DataSource = paycondition.AsQueryable<PayCondition>().OrderBy(sortExpression); 

解決方案:

GridPayCondition.DataSource = paycondition.AsQueryable<PayCondition>().OrderBy(sortExpression).ToList(); 

原因:

You can’t use an IQueryable object to data bind to a GridView and still use Paging and Sorting. You must return a List to the GridView using the ToList() method.

+0

謝謝@suprabhat錯誤已解決,但在此代碼中,排序只在第一次完成,而不是在下次執行。你能再次幫助我嗎? – ashT

+0

您是否第二次收到任何錯誤? – Prabhat

+0

不,沒有得到這樣的錯誤,但無法做到我想要的。我想對數據進行排序,一旦我點擊了gridview的標題,但是第二次點擊了標題排序沒有完成。應該是什麼原因? – ashT

0
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(); 
     } 
+0

if((string)ViewState [「SortDirection」] ==「DESC」) – ashT

+0

那裏我忘了做類型轉換,所以(字符串)很重要。 – ashT

相關問題