1

我在我的应用程序中使用 jquery Ui 选项卡

在此我正在加载三个不同的选项卡,每个选项卡上都有一个 asp 表单。我们知道 asp 页面必须只有一个表单,所以我从其他两个页面加载了这些内容,如下所示。

<li><a href="#tabs-1">Home</a></li>
<li><a href="user_info.aspx">My Uploads</a></li>
<li><a href="Enquiry.aspx">Enquiry</a></li>

在 user_info.aspx 页面中,我有一个 GridView

 <form runat="server">
   <asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" ></asp:GridView>     
 </form>

我在我的网格视图中添加了一个分页,在更改页面时会加载该 user_info.aspx 页面。当我更改网格视图的分页页面时,有没有办法在之后加载它。

4

1 回答 1

1

编辑:经过大量研究,我得出的结论是,这不能按照您尝试的方式完成。原因是当您将页面加载到user_info.aspx页面中时,您的页面Default.aspx中有 2 个带有 idform1的表单。因此,当__doPostBack()在 GridViews 页面中单击调用该函数时,您会得到一个 Javascript 异常,因为__doPostBack()被调用的是来自Default.aspx. 由于您从user_info.aspx( GridView1) 传递参数,因此您会收到错误消息。如果您更改页面中表单的其中一个 id,然后单击 GridView 的页面,您将得到一个 asp.net 异常,因为 ViewState 将无效(如果您还更改了表单的操作,默认.aspx)。

并非一切都是坏消息,您有一些解决方案:

解决方案 1:只需添加GridView到您的选项卡。

解决方案 2:添加IFrame指向user_info.aspx. 如果您真的必须将 GridView 放在不同的页面中,我会选择这个解决方案。

示例

标记

<div id="tabs-2">
    <iframe src="user_info.aspx" id="myFrame" frameborder="0"></iframe>
</div>

jQuery :

$('#myFrame').load(function () {
    $(this).height($(this).contents().height());
    $(this).width($(this).contents().width());
});

这个 jQueryIFrame适合它的内容。它确实看起来确实属于那里(它也是无边界的),如果您更改页面,它会保留在同一个选项卡中。

截图

在此处输入图像描述

于 2013-04-12T05:05:29.567 回答