我在我的应用程序中使用了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>
我在网格视图中添加了一个pagenation,在更改页面时会加载user_info.aspx页面。当我更改网格视图的pagenation页面时,有没有办法在后面加载它。
答案 0 :(得分:1)
编辑:经过大量研究后,我得出的结论是,这不可能按照您尝试的方式完成。这是因为当您将user_info.aspx
页面加载到Default.aspx
时,您的页面中有两个ID为form1
的表单。因此,当通过单击GridViews页面调用__doPostBack()
函数时,您将获得Javascript异常,因为被调用的__doPostBack()
是来自Default.aspx
的{{1}}。由于您从user_info.aspx
(GridView1
)传递参数,因此会出现错误。如果您更改了页面中某个表单的ID,并单击GridView的页面,您将获得一个asp.net异常,因为ViewState将无效(如果您还更改了表单的操作,到Default.aspx)。
并非一切都是坏消息,你有一些解决方案:
解决方案1 :只需将GridView
添加到您的标签页。
解决方案2 :添加指向IFrame
的{{1}}。如果你真的必须在不同的页面中使用GridView,我会选择这个解决方案。
示例强>:
<强>标记强>:
user_info.aspx
<强>的jQuery 强>:
<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());
});
符合它的内容。它确实看起来像它属于那里(它也是无边界的),如果你改变页面,它就会保留在同一个标签中。
<强>截图强>: