Загрузка вкладок Ajax по требованию - PullRequest
0 голосов
/ 02 ноября 2010

У меня есть три вкладки.Я хочу загрузить затем по требованию, кроме первой вкладки.Если я нажму 2-ю вкладку, она загрузит вторую вкладку.Моя проблема: если я загружаю 2-ю вкладку и перехожу на 3-ю вкладку, а когда я возвращаюсь на 2-ю вкладку, она загружается сноваЭтого не должно быть.после загрузки вкладки она не должна загружаться снова.Как этого добиться?вот мой пример кода ....

<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 Ответ

0 голосов
/ 02 ноября 2010

Быстро и просто - добавьте скрытое поле формы на страницу aspx и добавьте имя вкладки к ее значению. Затем, прежде чем вы действительно загрузите вкладку, убедитесь, что значение не включено в значение скрытых полей формы.

Я считаю, что это должно сработать, но проблема в том, что вы используете встроенный AJAX-материал из .Net, который мне трудно обойти. Обычно на стороне клиента я бы создал глобальную переменную, которая сообщает мне, какие вкладки были загружены, и загружал вкладку, только если это не было сделано ранее, в противном случае я просто отображал бы уже загруженную вкладку. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...