代码之家  ›  专栏  ›  技术社区  ›  Tronics

按需加载Ajax选项卡

  •  0
  • Tronics  · 技术社区  · 15 年前

    <cc1:TabContainer ID="tabEditTskContainer" OnActiveTabChanged="tabEditTskContainer_TabChanged"
    OnClientActiveTabChanged="tabChanged" AutoPostBack="true" runat="server" Height="300px"
    Width="100%" ActiveTabIndex="0">
    <cc1:TabPanel runat="server" ID="tabEditTskPnl" Enabled="true" HeaderText="Current Balance History"
        Width="99%">
        <HeaderTemplate>
            Edit Task
        </HeaderTemplate>
        <ContentTemplate>
            <br />
        </ContentTemplate>
    </cc1:TabPanel>
    <cc1:TabPanel ID="tabAttach" runat="server" Height="100%" Enabled="true" Width="99%">
        <HeaderTemplate>
            Attachments
        </HeaderTemplate>
        <ContentTemplate>
        </ContentTemplate>
    </cc1:TabPanel>
    <cc1:TabPanel ID="tabAddNotes" Height="100%" runat="server" Enabled="true" Width="99%">
        <HeaderTemplate>
            Notes
        </HeaderTemplate>
        <ContentTemplate>
        </ContentTemplate>
    </cc1:TabPanel>
    

    <input type="hidden" runat="server" id="hdnTabAttach" />
            <input type="hidden" runat="server" id="hdntabAddNotes" />
    
    
    function tabChanged(sender, args) {
            var tabIndex = sender.get_activeTabIndex();
            if (tabIndex == "1") {
                if (document.getElementById('hdnTabAttach').value == "0") {
                    return true;
                }
                else
                    return false;
            }
        }
    
    
    protected void tabEditTskContainer_TabChanged(object sender, EventArgs e)
    {
        try
        {
            int intTabIndex = tabEditTskContainer.ActiveTabIndex;
    
            if (intTabIndex == 1 && hdnTabAttach.Value != "1")
            {
                hdnTabAttach.Value = "1";
            }
    
            if (intTabIndex == 2)
            {
    
                DBLayer obj = new DBLayer();
                SqlCommand cmd = new SqlCommand();
                SqlParameter param = new SqlParameter("@fOrderID", SqlDbType.NVarChar, 255);
                param.Value = Session["selorderID"].ToString();
                param.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(param);
                param = new SqlParameter("@fncatid", SqlDbType.NVarChar, 25);
                param.Value = "1";
                param.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(param);
                DataSet dsGetNotes = obj.ExecuteDatasetSql("[usp_GetNotes]", cmd);
                Session["GvNotes"] = dsGetNotes;
                gvNotes.DataSource = dsGetNotes;
                gvNotes.DataBind();
    
            }
    
        }
        catch (Exception ex)
        {
    
        }
    
    }
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Matt    15 年前

    快速而简单——在aspx页面中添加一个隐藏的表单字段,并将其附加到选项卡名称的值中。然后,在实际加载选项卡之前,请确保“隐藏表单字段”值中不包含该值。

    我相信这应该行得通,但问题是您正在使用.Net中的内置ajax,我发现很难解决这个问题。通常,在客户端,我会创建一个全局变量,告诉我加载了哪些选项卡,如果以前没有加载过,则只加载一个选项卡,否则,我只显示已经加载的选项卡。