我正在尝试 ASP.NET Ajax Control Toolkit TabContainer 的 OnDemand 功能,以延迟执行昂贵的操作,直到加载选项卡。
在我的页面上有几个选项卡,每个选项卡的内容由一个用户控件组成
<ajaxToolkit:TabContainer ID="TabContainer1" ActiveTabIndex="0" OnDemand="True" runat="server">
<ajaxToolkit:TabPanel ID="TabPanel1" HeaderText="tab 1" runat="server" >
<ContentTemplate>
<UC:Tab1 runat="server" />
</ContentTemplate>
</ajaxToolkit:TabPanel>
<ajaxToolkit:TabPanel ID="TabPanel2" HeaderText="tab 2" runat="server">
<ContentTemplate>
<UC:Tab2 runat="server" />
</ContentTemplate>
</ajaxToolkit:TabPanel>
</ajaxToolkit:TabContainer>
然后,这些用户控件中的每一个都使用我继承的自定义 MVP 框架连接到演示者。Presenter 在 OnLoad 中执行
// In user control
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
presenter.BuildView(); // this is what I want to delay until the tab is active
}
由于总是调用 OnLoad,无论选项卡是否处于活动状态,我都知道这是要附加到的适当事件。附加的正确事件是什么,这样我可以达到与此处提供的示例相同的效果,SqlDataSource 的选择事件仅在加载选项卡时触发。
也许覆盖渲染?还是 CreateChildControls?