Lazy loading tabs with user controls

前端 未结 1 1081
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-22 08:36

I want to use lazy loading of tabs in AJAX tab container. I have implemented it. But the problem that I am facing is that when I click a button or fire any event in that user co

相关标签:
1条回答
  • 2021-01-22 08:48

    You need to recreate dynamically created controls on every postback in Page_Load at the latest, with the same ID as before. So you can load and add them to your panels in ActiveTabChanged, but you need to recreate them in the next postback in Page_Init/Page_Load. Therefor you need to store somewhere what to recreate (f.e. in Session).

    But i assume that you're making things more complicated than necessary, you could simply create these UserControls even declaratively (on aspx) with an initial Visible state of false. Then you only need to switch visibility of the controls as necessary in ActiveTabChanged.

    Note: invisible serverside webcontrols will not be rendered at all to the client and no ViewState will be saved. So there's no disadvantage in declaring them.

    Lazy-Load does not mean that you create these controls as late as possible but it means that you databind them as late as possible. So never bind them to the database from page_load (f.e. in the UserControl), but only from methods that will be called when necessary from the page(here from ActiveTabChanged). Therefor you could implement a public method BindData in your UserControl UC1.

    Here's a simple example:

    switch (tabName)
    {
        case "tab1":
            UC1_1.Visible = true;
            UC1_1.BindData();
            UC1_2.Visible = false;
            break;
        case "tab2":
            UC1_1.Visible = false;
            UC1_2.Visible = true;
            UC1_2.BindData();
            break;
    }
    

    and in your UserControl

    public void BindData()
    {
        // put here all your databinding stuff 
        // that is in page_load now ...
    }
    

    This is probably the best tutorial on lazy-loading ajax TabPanels:

    • http://mattberseth.com/blog/2007/07/how_to_lazyload_tabpanels_with.html
    0 讨论(0)
提交回复
热议问题