我有三个标签。我希望按需加载,除了第一个选项卡。如果我单击第二个选项卡,它将加载第二个选项卡。我的问题是如果我加载第二个选项卡并转到第三个选项卡,当我回到第二个选项卡时,它再次加载。这不应该发生。选项卡加载后,不应再次加载。怎么做到这一点?这是我的示例代码....
<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)
{
}
}
答案 0 :(得分:0)
快速简便 - 在您的aspx页面中添加一个隐藏的表单字段,并将选项卡名称附加到其值。然后,在实际加载选项卡之前,请确保该值不包含在隐藏的表单字段值中。
我相信这应该可行,但问题是你正在使用.Net内置的ajax,我发现很难解决这个问题。通常,客户端,我会创建一个全局变量,告诉我已经加载了哪些选项卡,如果以前没有加载选项卡,则只加载选项卡,否则,我只显示已加载的选项卡。