簡體   English   中英

按需加載Ajax選項卡

[英]Load Ajax tabs on demand

我有三個標簽。 我要加載,然后按需加載,但第一個選項卡除外。 如果我單擊第二個選項卡,它將加載第二個選項卡。 我的問題是,如果我加載第二個選項卡並轉到第三個選項卡,當我回到第二個選項卡時,它將再次加載。 那不應該發生。 一旦加載了標簽頁,就不會再次加載。 如何實現呢? 這是我的示例代碼。

<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)
    {

    }

}

快速簡便-將隱藏的表單字段添加到aspx頁面,然后在選項卡名稱上附加其值。 然后,在實際加載選項卡之前,請確保該值未包含在隱藏的表單字段值中。

我相信這應該可以工作,但是問題是您正在使用.Net內置的ajax東西,我發現這很難解決。 通常,在客戶端,我將創建一個全局變量來告訴我已加載了哪些標簽,並且僅在之前未完成加載時才加載標簽,否則,我將僅顯示已加載的標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM