0

タブコンテナに一連のタブがあり、タブを手動でクリックするか、JavaScriptを使用して自由に移動できます。ただし、私がやりたいことは、ASP.NET サーバーサイド ボタンを使用してタブを切り替えることです。

というわけでレイアウトはこちら。タブ 1 には ASP.NET ボタンがあり、クリックするとタブ 2 に移動し、クエリの結果がグリッドビューに表示されます。ASP.NET ボタンの onclick コードは次のとおりです。

    protected void btnOutstandingTasks_Click(object sender, EventArgs e)
    {
        try
        {
            // Load task list by all outstanding tickets
            SqlDSOutstanding.SelectParameters.Clear();
            SqlDSOutstanding.SelectParameters.Add("1", TypeCode.Int64, "3");

            gvxTaskList.DataSourceID = null;
            gvxTaskList.DataSource = SqlDSOutstanding;
            gvxTaskList.DataBind();
            upnlTaskList.Update();

            DispatchTabs.ActiveTabIndex = DispatchTabs.ActiveTabIndex + 1;   

        }
        catch (Exception ex)
        {

        }
    }

なぜうまくいかないのかわかりませんが、誰かがそれを行う方法を知っていると思います。助けてくれてありがとう!

これは、タブ コンテナーが更新パネル内にあることを示すクライアント側です。

        <asp:UpdatePanel ID="upnlDispatch" UpdateMode="Conditional" runat="server">
        <Triggers></Triggers>
        <ContentTemplate>
            <ajaxToolkit:TabContainer ID="DispatchTabs" runat="server" Height="100%" Width="100%" CssClass="Tab" ActiveTabIndex="0">
                <ajaxToolkit:TabPanel ID="tabDashboard" runat="server" HeaderText="Dashboard" Width="100%" Height="100%">
                    <HeaderTemplate>
                        Dashboard
                    </HeaderTemplate>
                    <ContentTemplate>
                        <asp:UpdatePanel ID="upnlDashboard" UpdateMode="Conditional" runat="server">
                            <ContentTemplate>                   
4

1 に答える 1

1

更新パネル内にタブ コンテナーを配置すると、うまくいくはずです。また、現在、コードには欠陥があります。最後の 1 つを超えると範囲外の例外が発生するため、ActiveIndex タブに常に 1 を追加する必要はありません。

if(DispatchTabs.ActiveTabIndex == DispatchTabs.Count() -1)
{
   DispatchTabs.ActiveTabIndex = 0;
}
else
{
   DispatchTabs.ActiveTabIndex = DispatchTabs.ActiveTabIndex + 1;  
}
于 2012-10-16T19:01:57.923 に答える