使用asp.net用户控件gridview的jquery ajax选项卡

时间:2009-07-14 14:22:35

标签: asp.net jquery ajax user-controls tabs

我有一个用户控件,其中包含一个gridview with paging。分页由对象数据源驱动,因此它默认使用dopostback事件。

我想使用jquery通过ajax将usercontrol加载到一个选项卡中,因为我有多个选项卡,我不想一次加载所有选项卡,如果不需要,可以获取所有数据库命中。

因此,我将该用户控件放在空白的aspx文件上,并将选项卡的href =设置为该aspx文件。 gridview加载很好,看起来很棒。

我遇到的问题是当我尝试更改gridview上的页面时,回发将转到aspx文件的URL而不是我在选项卡上的页面。我知道这应该发生,但我想知道我能做些什么来使它能够回到正确的页面并在标签内工作。

无论是否有更新面板,它都无效。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

客户端:

    <script language="javascript" type="text/javascript">
    $(document).ready(function () {

        var hdn = document.getElementById('<%= tabid.ClientID %>');

        var tbs = $("#tabs").tabs({
            select: function (event, ui) {                    
                if (hdn) hdn.value = ui.index;
            }
        });

        tbs.tabs('select', <%= sel %>);

    });
</script>

<asp:HiddenField ID="tabid" runat="server" />

服务器:

method Tabs.Page_Load(sender: Object; e: EventArgs);
begin
    if (page.isPostBack) then
        sel := tabid.Value
    else 
        sel := "0";
end;

其中sel是页面类的公共属性:

Tabs = public partial class(System.Web.UI.Page)
    public property sel : String := '0';

答案 1 :(得分:0)

您可以使用url参数:

为不同的标签使用相同的aspx文件
MyTabs.aspx?tab=gridViewOnly

然后在服务器端,您可以检查需要显示哪个选项卡:

string tab = Request.Params["tab"];

if(tab == "gridViewOnly")
{
// make the gridview visible and do only needed calls to DB
}