在GridView 使用ObjectDatasource 使用自定义分页后,出现点击字段进行排序的时候,点第二页的某个字段排序,会自动跳转到第一页。
有高手知道原因吗!

解决方案 »

  1.   

    看看这个:
    http://www.cnblogs.com/jarod99/archive/2009/01/22/1379758.html
      

  2.   


    [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]
            public DataTable GetDocumentsPaged(int startRowIndex, int maximumRows,string orderby)
            {            ListDictionary Dic = new ListDictionary();
                //vm_UserDocument GetCount = new vm_UserDocument();
                Dic.Add("datasrc", "vw_UserDocuments");
                Dic.Add("startRowIndex", startRowIndex);
                Dic.Add("maximumRows",maximumRows);
                if (orderby != "")
                {
                    Dic.Add("orderby", orderby);
                }
                this.LoadFromSql("proc_GetPagedData", Dic);
                return this.DataTable;
            }
    这个事BLL类 里面从数据库调数据的,数据库有proc_GetPagedData的存储过程,使用的基类是Mygeneration(ORM)产生的.
     protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
        {
            if (e.ExecutingSelectCount)
            {
                e.InputParameters.Clear();        }
            else
            {            string order = this.CCDocument.SortExpression;
                if (order != "")
                    order = order + (this.CCDocument.SortDirection == SortDirection.Ascending ? " Asc " : " Desc");
                e.InputParameters["orderby"] = order;
            }
        }
    排序使用的代码
              
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetDocumentsPaged"
                TypeName="CaptureVueCentral.BLL.vm_UserDocument" OnObjectCreated="ObjectDataSource1_ObjectCreated" EnablePaging="true" SelectCountMethod="TotalNumberOfDocuments" OnSelecting="ObjectDataSource1_Selecting">
            </asp:ObjectDataSource>                       
     <asp:UpdatePanel ID="updatePanel" runat="server" UpdateMode="Conditional">
                                        <ContentTemplate>
                                            <asp:GridView ID="CCDocument" runat="server" OnRowDataBound="RowDataBound" AutoGenerateColumns="False"
                                                AllowPaging="True" CssClass="tablesorter" DataSourceID="ObjectDataSource1" DataKeyNames="DocID" PageSize="2" AllowSorting="True" OnSorting="CCDocument_Sorting">
                                                <PagerStyle CssClass="pager-row" />
                                                <RowStyle CssClass="row" />
                                                <PagerSettings PageButtonCount="7" FirstPageText="&#171;"
                                                    LastPageText="&#187;" />
                                                <Columns>
                                                    <asp:BoundField HeaderText="DocID" DataField="DocID" SortExpression="DocID">
                                                        <HeaderStyle CssClass="first" />
                                                        <ItemStyle CssClass="first" />
                                                    </asp:BoundField>
                                                    <asp:BoundField HeaderText="DocName" DataField="DocName" SortExpression="DocName" />
                                                    <asp:BoundField HeaderText="Project" DataField="Project" SortExpression="Project" />
                                                    <asp:BoundField HeaderText="Require Comment" DataField="RequireComment" SortExpression="RequireComment"
                                                        DataFormatString="{0:c}">
                                                        <ItemStyle CssClass="money" />
                                                    </asp:BoundField>
                                                    <asp:BoundField HeaderText="Viewed" DataField="Viewed" SortExpression="Viewed" />
                                                    <asp:BoundField HeaderText="Status" DataField="RecipientDocStatus" SortExpression="RecipientDocStatus" />
                                                    <asp:BoundField HeaderText="Received Date" DataField="RevDate" SortExpression="RevDate" />
                                                    <asp:BoundField HeaderText="Assign User" DataField="DMUser" SortExpression="DMUser"/>
                                                    <asp:TemplateField>
                                                        <ItemTemplate>
                                                            <input class="button" type="button" value="Edit" onclick='ShowDetails(<%#Eval("DocID")%>,<%# Container.DataItemIndex%>)' />
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                </Columns>
                                            </asp:GridView>
                                        </ContentTemplate>
                                    </asp:UpdatePanel>
      

  3.   

    分页是没什么问题的,主要是用了gridview的Sorting,会出现问题!
      

  4.   


    对,是你的Sorting出问题了,在点击的时候每次都绑定了分页方法,所以全调回去了