2012-01-05 37 views
5

Tôi có một trang nơi khách có thể được chọn.Phân trang tùy chỉnh Gridview trong điều khiển thuật sĩ không hoạt động chính xác trong asp.net

Trang này chứa một bảng cập nhật, trong bảng cập nhật có một điều khiển wizard và trong việc kiểm soát phù thủy có một GridView (Panel-> Update Panel -> Control Wizard -> GridView)

Bây giờ phân trang không hoạt động tốt, tôi đã tìm kiếm trên Internet để tìm câu trả lời nhưng tôi không tìm được câu trả lời đúng. Tôi sử dụng phân trang tùy chỉnh.

Khi tôi muốn thay đổi số pagenumber (thành trang thứ hai hoặc trang cuối), nó hoạt động tốt. Nhưng khi tôi muốn chọn một hàng hoặc đi đến một trang khác, GridView không hoạt động chính xác. Khi tôi chọn Một hàng trên trang thứ hai hoặc trang cuối cùng (trang khác không hoạt động) khách (mục) đã chọn luôn là một trong những trang đầu tiên. Khi tôi muốn thay đổi một trang khác (từ trang thứ hai hoặc trang cuối), nó không hoạt động và vẫn ở trên trang đã chọn.

Có cách nào để giải quyết vấn đề này không?

một phần của mã:

   <asp:Panel ID="PnlRe" Style="display: none; ... > 
    <asp:UpdatePanel ID="UpdtPnlDetail" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
     ... 
     <asp:Wizard ID="wzd" runat="server" ... > 
      ... 
      <asp:WizardStep ID="WizardStep3" runat="server" Title="Naam"> 
         ... 
          <asp:Gridview ID="Gridview1" runat="server" AutoGenerateColumns="False" 
           DataKeyNames="GastID,Versie" DataSourceID="odsGasten" EmptyDataText="...." 
           OnRowCommand="Gridview1_RowCommand" OnPageIndexChanging="Gridview1_PageIndexChanging" 
           OnPageSizeChanging="Gridview1_PageSizeChanging" OnSearching="Gridview1_Searching" 
           OnSorting="Gridview1_Sorting" OnRowDataBound="Gridview1_RowDataBound" 
           CausesValidation="False" meta:resourcekey="..." PagerType="Custom" 
           ShowFilter="True" ShowInsertRecord="True" ShowPageSizer="True" UseSubmitBehaviour="False"> 
           <Columns> 
            <asp:TemplateField ShowHeader="False" meta:resourcekey="..."> 
             <ItemTemplate> 
              <asp:ImageButton runat="server" CommandName="Select" CausesValidation="False" SkinID="uprowbutton" 
               ToolTip="..." ID="ImgBtnSelect" meta:resourcekey="..."> 
              </asp:ImageButton> 
             </ItemTemplate> 
            </asp:TemplateField> 
            ... Boundfields ... 
           </Columns> 
          </asp:Gridview> 
         ... 
        </asp:WizardStep> 
        ... 
    </asp:Wizard> 
    </ContentTemplate> 
</asp:UpdatePanel> 

protected void Gridview1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    this.odsGasten.FilterExpression = searchText; 
    this.Gridview1.DataBind(); 
    this.UpdtPnlDetail.Update(); 
} 
+2

Bạn đang sử dụng UpdatePanel có điều kiện nhưng tôi không thấy bất kỳ trình kích hoạt nào. Bạn đã bỏ qua chúng hay bạn không có trình kích hoạt nào được đăng ký? Nếu bạn cần rời khỏi UpdatePanel như điều kiện, tôi nghĩ bạn cần đăng ký sự kiện PageIndexChanging như là một trigger. –

Trả lời

0

có một cách khó khăn để đạt được điều này, bạn phải thao tác nguồn dữ liệu của bạn. ví dụ nếu bạn đang sử dụng một datatable bạn phải chọn mười yếu tố đầu tiên của dt và ràng buộc nó vào lưới, và khi nút tiếp theo được nhấp vào có được mười yếu tố tiếp theo của dt và liên kết nó với GridView. điều này sẽ làm cho công việc của bạn dễ dàng và sẽ nhận được nhiều hiệu suất hơn cho trang của bạn.

0

Tôi có thể thấy rằng this.GridView1.DataBind() được gọi trong GridView1_PageIndexChanging, nhưng currentPageIndex được lưu trữ và cập nhật với chỉ mục trang bạn muốn điều hướng đến và khi nào trong quá trình diễn ra?

0

Nghe có vẻ như bạn gặp vấn đề về quang tuyến.

Bạn cần đảm bảo rằng giữa Init và Load bạn có bộ nguồn của lưới, hoặc từ chế độ xem hoặc từ một liên kết mới.

Các vấn đề liên quan