我想在AJAX标签容器中使用标签的延迟加载。我已经实现了。但是我面临的问题是,当我单击按钮或触发该用户控件中的任何事件时,不会触发该事件。没发生什么事。
<asp:TabContainer runat="server" ID="TabContainerUp"
ActiveTabIndex="0" AutoPostBack="true" OnActiveTabChanged="TabContainerUp_ActiveTabChanged">
<asp:TabPanel ID="tab1" runat="server">
<HeaderTemplate>
<img src="images/uc1.png" alt="" />
</HeaderTemplate>
<ContentTemplate>
<asp:Panel ID="pnlUC1" runat="server">
</asp:Panel>
</ContentTemplate>
</asp:TabPanel>
<asp:TabPanel ID="tab2" runat="server">
<HeaderTemplate>
<img src="images/uc2.png" alt="" />
</HeaderTemplate>
<ContentTemplate>
<asp:Panel ID="pnlUC2" runat="server">
</asp:Panel>
</ContentTemplate>
</asp:TabPanel>
</asp:TabContainer>
代码背后:
protected void TabContainerUp_ActiveTabChanged(object sender, EventArgs e)
{
string tabName = TabContainerUp.ActiveTab.ID;
getActiveTab(tabName);
}
public void getActiveTab(string tabName)
{
UserControl uc;
//uc.
switch (tabName)
{
case "tab1":
pnlUC1.Controls.Clear();
uc = Page.LoadControl("~/Controls/UC1.ascx") as UserControl;
pnlUC1.Controls.Add(uc);
break;
case "tab2":
pnlUC2.Controls.Clear();
uc = Page.LoadControl("~/Controls/UC1.ascx") as UserControl;
pnlUC2.Controls.Add(uc);
break;
}
}
您需要Page_Load
最迟在每个回发中重新创建动态创建的控件,其ID与以前相同。因此,您可以在中加载并将它们添加到面板中ActiveTabChanged
,但是您需要在下一次回发中重新创建它们Page_Init/Page_Load
。因此,您需要在某处存储要重新创建的内容(fe
in Session
)。
但是我假设您使事情变得比必要的复杂,您甚至可以声明性地(在aspx上)以初始Visible
状态创建这些UserControl
false
。然后,您只需要根据需要在中切换控件的可见性ActiveTabChanged
。
注意 :不可见的服务器端Web控件根本不会呈现给客户端,并且不会ViewState
保存任何内容。因此,声明它们没有任何缺点。
延迟加载
并不意味着您尽可能晚地创建这些控件,而是意味着您要尽可能晚地对其进行数据绑定。因此,切勿将它们从page_load
(用户控件中的fe)绑定到数据库,而只能将其绑定到需要时从页面调用的方法(此处是fromActiveTabChanged
)。因此,您可以BindData
在UserControl中实现一个公共方法UC1
。
这是一个简单的例子:
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;
}
在你的 UserControl
public void BindData()
{
// put here all your databinding stuff
// that is in page_load now ...
}
这可能是关于延迟加载ajax TabPanels的最佳教程:
问题内容: 如果这是完全相同的内容,请纠正我,我知道这个话题经常被讨论,但是找不到确切的答案。 问题: 在MVC Web应用程序中处理Hibernate对象的最佳实用解决方案是什么? 细节: 我正在使用Hibernate,并希望在可能的情况下利用延迟加载。 我正在使用MVC风格的webapp。 我讨厌获得延迟加载初始化异常。 我讨厌不得不在事务之间重新连接Hibernate对象。 选项: 渴望装载
我使用Backbone.js在页面上一次加载20个项目,当您向下滚动到底部时获得更多项目,直到没有剩余的项目可以从服务器获取。 同时,我希望在顶部有一个输入字段,当您键入名称时,它会过滤匹配的项目。 问题是,如果您尚未滚动到底部并获取完整集,那么输入过滤器将只匹配页面上当前的项目。 在技术和视觉上,将UI过滤与延迟加载项相结合的最佳解决方案是什么? 编辑:这里真正的场景是加载你的所有faceboo
描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l
我们的网站通过Netscaler运行,我们已经激活了图像的延迟加载。我试图了解它的功能,以及它是否可以以任何方式控制。例如,如果可以将特定图像设置为非延迟加载。但是我找不到关于它的具体实现的任何东西,只找到描述如何激活它的文章。 如果我理解正确,它就像经典的基于js的lazyloading一样,通过添加类lazy并将src移动到数据原始属性来转换imagetags。然后,当滚动到视图中时,java
问题内容: 如果这是完全相同的内容,请纠正我,我知道这个话题经常被讨论,但是找不到确切的答案。 问题: 在MVC Web应用程序中处理Hibernate对象的最佳实用解决方案是什么? 细节: 我正在使用Hibernate,并希望在可能的情况下利用延迟加载。 我正在使用MVC风格的Webapp。 我讨厌获得延迟加载初始化异常。 我讨厌不得不在事务之间重新连接Hibernate对象。 选项: 渴望装载
问题内容: 我在JPA实体中的延迟加载属性有问题。我读过许多类似的问题,但它们与spring或hibernate有关,并且他们的后代不适用或没有帮助。 该应用程序是在Wildfly应用程序服务器上运行的JEE和JPA2.1。有两个实体,DAO会话bean和servlet将它们放在一起: 当我运行此代码时,它失败并显示: 我对WebLogic / JPA1使用了非常相似的模式,并且运行平稳。任何的想