0

コード ビハインドでプロジェクト マスター ページにいくつかのコントロールを追加する必要がありますが、ポストバック後もそれらを維持したいのですが、どうすればよいですか? 私はそれについて検索しましたが、 preinit を使用する必要があると思いますが、方法がわからず、マスターページに preinit があるかどうかもわかりません。

<form id="form1" runat="server">
    <asp:ScriptManager ID="MainScriptmanager" runat="server" EnablePartialRendering="true" />
    <asp:UpdatePanel ID="MasterContentUpdatePanel" runat="server" UpdateMode="conditional">
        <ContentTemplate>
            <asp:TabContainer ID="MainTabContainer" runat="server" ActiveTabIndex="1" TabStripPlacement="Bottom">
            </asp:TabContainer>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
        </ContentTemplate>
    </asp:UpdatePanel>
</form>


  protected void Button1_Click(object sender, EventArgs e)
    {
        tabCount = tabCount + 1;
        AjaxControlToolkit.TabPanel tab = new AjaxControlToolkit.TabPanel();
        tab.ID = "tab" + Convert.ToString(tabCount);
        tab.HeaderText = "tab" + Convert.ToString(tabCount);
        MainTabContainer.Tabs.Add(tab);
    }
4

2 に答える 2

0

ポストバックごとにタブを再作成する必要があります。

たとえば、タブの数を ViewState に保存することができます。

次に PostBack で、たとえば Page_Load イベント ハンドラにタブを追加します。

var tabCount = ... get it from ViewState
for(int i=0; i<tabCount; i++)
{
    AjaxControlToolkit.TabPanel tab = new AjaxControlToolkit.TabPanel();
    tab.ID = "tab" + Convert.ToString(i+1);
    tab.HeaderText = "tab" + Convert.ToString(i+1);
    MainTabContainer.Tabs.Add(tab);
}
于 2013-09-05T04:48:28.550 に答える
0

What keeps you from creating the controls and adding it to a, say, panel, in code behind? Create a panel in designer, name it, and create/add all the controls to in code behind wherever you need. Viewstate will preserve their contents between postbacks, you don't need to do anything extra.

于 2013-09-01T10:39:45.400 に答える