modalpopupextender问题中的GridView分页 : 我在modalpopupextender中有一个GridView ...但事情是Paging在它里面没有工作....
我的HTML代码是:
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:gridview runat="server" id="GridView2" showfooter="true"
autogeneratecolumns="false" GridLines="None" CssClass="table"
HeaderStyle-CssClass="th" RowStyle-CssClass="td" Width="100%"
OnRowCreated="GridView2_RowCreated" >
<columns>
<asp:TemplateField HeaderText="Date" >
<ItemTemplate>
<asp:LinkButton ID="Date" runat="server" CausesValidation="false" CommandName="Date_Select" Text='<%#Eval("Date","{0:yyyy-MM-dd}") %>' onclick="Date1_Click" EnableTheming="False"></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
</EditItemTemplate>
</asp:TemplateField>
<asp:boundfield datafield="" headertext="Total" footerstyle-font-bold="true"
footertext="Grand Total:" >
<FooterStyle Font-Bold="True"></FooterStyle>
</asp:boundfield>
<asp:boundfield datafield="MIns" headertext="Mins"
footerstyle-font-bold="true" >
<FooterStyle Font-Bold="True"></FooterStyle>
</asp:boundfield>
<asp:boundfield datafield="Amount" headertext="Amount" footerstyle-font-bold="true"
>
<FooterStyle Font-Bold="True"></FooterStyle>
</asp:boundfield>
<asp:boundfield datafield="Profit" headertext="Profit"
footerstyle-font-bold="true">
<FooterStyle Font-Bold="True"></FooterStyle>
</asp:boundfield>
</columns>
<HeaderStyle BackColor="#CEFF99" ForeColor="Black" BorderColor="#C1FF80" BorderStyle="Solid"
BorderWidth="1px"></HeaderStyle>
<RowStyle CssClass="td"></RowStyle>
</asp:gridview>
<asp:Button runat="server" ID="btnModalPopUp1"
style="display:none"/>
<AjaxToolkit:ModalPopupExtender ID="modalPopUpExtender2"
runat="server"
TargetControlID="btnModalPopUp1"
PopupControlID="pnlPopUp1"
BackgroundCssClass="modalBackground" CancelControlID="btnCancel1" X="570" Y="10"
>
</AjaxToolkit:ModalPopupExtender>
<asp:UpdateProgress ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="UpdatePanel2">
<ProgressTemplate>
<div class="modal">
<div class="center" align="center">
This can take a while. Please be patient...
<img alt="" src="Images/loader.gif" />
</div>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:Panel runat="Server" ID="pnlPopUp1" CssClass="modalPopup">
<asp:Button runat="server" ID="btnCancel1"
Text="Close"/>
<asp:gridview runat="server" id="GridView18" showfooter="true"
autogeneratecolumns="false" GridLines="None" CssClass="table"
HeaderStyle-CssClass="th" RowStyle-CssClass="td" Width="100%"
AllowPaging="True" OnPageIndexChanging="OnPageIndexChanging" PageSize="10"
EnableSortingAndPagingCallbacks="True" >
<columns>
<asp:boundfield datafield="Customer" headertext="Customer"
footerstyle-font-bold="true" >
<FooterStyle Font-Bold="True"></FooterStyle>
</asp:boundfield>
<asp:boundfield datafield="MIns" headertext="Mins" footerstyle-font-bold="true" >
<FooterStyle Font-Bold="True"></FooterStyle>
</asp:boundfield>
<asp:boundfield datafield="Amount" headertext="Amount"
footerstyle-font-bold="true" >
<FooterStyle Font-Bold="True"></FooterStyle>
</asp:boundfield>
<asp:boundfield datafield="Profit" headertext="Profit" footerstyle-font-bold="true"
>
<FooterStyle Font-Bold="True"></FooterStyle>
</asp:boundfield>
</columns>
<HeaderStyle BackColor="#CEFF99" ForeColor="Black" BorderColor="#C1FF80" BorderStyle="Solid"
BorderWidth="1px"></HeaderStyle>
<RowStyle CssClass="td"></RowStyle>
</asp:gridview>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID = "GridView18" EventName="PageIndexChanging" />
</Triggers>
</asp:UpdatePanel>
这是我的寻呼代码:
protected void OnPageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView18.DataSource = ds;
GridView18.PageIndex = e.NewPageIndex;
GridView18.DataBind();
modalPopUpExtender2.Show();
}
任何帮助都非常感谢...提前致谢...
答案 0 :(得分:0)
首先:如果你转到MSDN concerning UpdatePanels并向下滚动到以下部分:
与UpdatePanel控件不兼容的控件
你找到了这个:
- GridView和DetailsView控制何时将其EnableSortingAndPagingCallbacks属性设置为true。
分页Gridview需要回发。通常,当您使用任何类型的模态/弹出控件时,它使用JS来激活。但是回发正在消除弹出窗口......所以......
主要的是你需要能够在回发之间保持弹出状态。有几种方法可以解决这个问题。
最简单的方法是消除分页并使用滚动,假设项目总数是可管理的列表。如果列表太长,那么无论如何它对于用户而言也是太多的信息,并且应该被过滤到可管理的列表。
如果必须使用分页,则需要使用能够承受回发的弹出控件,这可能意味着使用<iframe>
。我不太了解AjaxControlToolkit是否可以这样做。
就个人而言,当我需要通过弹出窗口执行您要执行的操作时,我使用Colorbox。 但这也需要jquery 。
我将gridview移动到独立页面并配置Colorbox以在iframe中打开页面。这样iframe就可以管理分页回发。