0

「タブを追加」ボタンをクリックすると、サーバー側のコード(tabs.ActiveTabIndex+=1)がタブを変更しますが、タブは空に見えます。前後にクリックすると、ユーザーコントロールのレンダリングが表示されます。私は何かが足りないのですか?

<ajaxToolkit:TabContainer ID="TabContainer1" runat="server" Height="90%" Width="100%"
        ActiveTabIndex="0" OnDemand="true" AutoPostBack="false" TabStripPlacement="Top"
        CssClass="ajax__tab_xp" ScrollBars="None" UseVerticalStripPlacement="false" VerticalStripWidth="120px">
        <ajaxToolkit:TabPanel ID="tab1" runat="server" HeaderText="1">
            <ContentTemplate>
                <uc:UCCommSubmit ID="ucCommInfo" runat="server" />
            </ContentTemplate>
        </ajaxToolkit:TabPanel>
        <ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="" Visible="false">
            <ContentTemplate>
                <uc:UCCommSubmit ID="UCCommSubmit1" runat="server" />
            </ContentTemplate>
        </ajaxToolkit:TabPanel>
        <ajaxToolkit:TabPanel ID="TabPanel2" runat="server" HeaderText="" Visible="false">
            <ContentTemplate>
                <uc:UCCommSubmit ID="UCCommSubmit2" runat="server" />
            </ContentTemplate>
        </ajaxToolkit:TabPanel>
    </ajaxToolkit:TabContainer>
    <div style="padding-right: 20px; float: right">
        <asp:Button ID="btnNext" runat="server" Text="Add Tab" 
            onclick="btnNext_Click" />
    </div>


protected void btnNext_Click(object sender, EventArgs e)
    {
        if (TabContainer1.Tabs.Count > TabContainer1.ActiveTabIndex + 1)
        {
            TabContainer1.Tabs[TabContainer1.ActiveTabIndex + 1].HeaderText = (TabContainer1.ActiveTabIndex + 1).ToString();
            TabContainer1.Tabs[TabContainer1.ActiveTabIndex+1].Visible = true;
            TabContainer1.ActiveTabIndex += 1;
        }
    }
4

1 に答える 1

0

これが関連しているかどうかはわかりませんが、数か月前に同様の問題が発生しました。詳細情報を含むforums.asp.netにリンクしているSOの回答は次のとおりです: https ://stackoverflow.com/a/6307930/284240

また、のイベントをActiveTabIndexトリガーせずにfromcodebehindを変更したことが原因である可能性もあります。ActiveTabChangedTabContainer

ボタンのこのjavascript関数を使用してみてください。これonclickにより、TabContainerがこのイベントをトリガーします。

function changeActiveTab(tabContainerID,tabIndex){
    var ctrl = $find(tabContainerID);
    ctrl.set_activeTab(ctrl.get_tabs()[tabIndex]);
}

次に、イベントを処理し、UserControlsの可視性を変更できます(必要に応じてUpdatePanelsを更新します)。

私はここSOで別の同様の質問に答えたことに気づきました:

ActiveTab-Property(codebehindから)またはActiveTabIndexをcodebehindまたはaspxから設定しようとしましたか?

表示を明示的に表示に設定した場合にも、機能するかどうかを確認できます。

ActiveTabIndex="0" style="display:block;visibility:visible;"

Ajaxライブラリが正しくロードされていることを確認しますか?TabContainer内に他のAjaxコントロールがありますか?そのページのすべてのHTMLが有効かどうかを確認してください。

ScriptMangerの代わりに最新のAjaxToolkitとToolkitScriptManagerを使用していますか?

于 2011-12-10T22:45:17.483 に答える