0

我将 RadTabStrip 用于 2 个选项卡。我希望选项卡的 OnTabClick 更新页面上的更新面板。我遇到的问题是在子页面上找不到控件。

我对父页面的逻辑

protected void tabClick(object sender, RadTabStripEventArgs e)
{

    if (e.Tab.SelectedIndex == 0)
    {
        UpdatePanel tab1 = (UpdatePanel)Page.FindControl("up_EntirePage_Tab1");
        tab1.Update();
    }
    else
    {
        UpdatePanel tab2 = (UpdatePanel)Page.FindControl("up_EntirePage_Tab2");
        tab2.Update();

    }
}

所以 up_EntirePage_Tab1 和 up_EntirePage_Tab2 在他们尊敬的页面上看起来像这样。

<asp:UpdatePanel ID="up_EntirePage_Tab1" runat="server">
<asp:UpdatePanel ID="up_EntirePage_Tab2" runat="server">

并且 RadTabStrip 在父页面上看起来像这样

<telerik:RadTabStrip ID="RadTabStrip1" runat="server" SelectedIndex="0" 
            Height="100%"  MultiPageID="RadMultiPage1" OnTabClick="tabClick">
            <Tabs>
                <telerik:RadTab runat="server" PageViewID="t1" Text="Assign Events To Categories" >
                </telerik:RadTab>
                <telerik:RadTab runat="server" PageViewID="t2" Text="Assign User Types To Events" 
                    Selected="True">
                </telerik:RadTab>
            </Tabs>
</telerik:RadTabStrip>

不知道我需要做什么才能做到这一点。

几乎在 Tab 1 上,我有一个列表,如果我添加到它,它会更新得很好。现在,如果我单击包含相同列表的选项卡 2,它将不会被更新。所以我认为在切换时调用相关页面上的更新面板来更新应该为页面提取正确的信息。

如果有更简单的方法甚至更优化的方法,我将不胜感激,但现在我目前的方法甚至都行不通。我得到一个空引用,因为我的查找控件找不到更新面板。

编辑:更新面板位于用户控件 tabs1 和 tab2 中。它们是两个独立的用户控件。

4

2 回答 2

1

好的,在您的用户控件中,您需要在两个用户控件上为 UpdatePanel 创建属性。

对于 Usercontrol1 上的 Tab1

     public UpdatePanel Tab1UpdatePanel
    {
        get
        {
            return up_EntirePage_Tab1;
        }
        set
        {
            up_EntirePage_Tab1 = value;
        }
    }

对于 UserControl2 上的 Tab2

     public UpdatePanel Tab2UpdatePanel
    {
        get
        {
            return up_EntirePage_Tab2;
        }
        set
        {
            up_EntirePage_Tab2 = value;
        }
    }

现在您拥有两个 Updatepanel 的属性,现在您可以使用它们并做任何您想做的事情。

    protected void tabClick(object sender, RadTabStripEventArgs e)
    {

    if (e.Tab.SelectedIndex == 0)
    {
           UserControl1.Tab1UpdatePanel.Update();
    }
    else
    {
           UserControl2.Tab2UpdatePanel.Update();
    }
    }
于 2013-10-01T19:03:18.750 回答
0

如果我正确理解您的问题 1. 更新面板在父页面中(希望完全是 aspx 页面) 2. 选项卡在子页面中(希望完全是用户控件)

如果单击选项卡,您想刷新 aspx 中的更新面板。

尝试以下步骤 1:从您的子页面/用户控件公开事件。第 2 步:将 Even 处理程序附加到父页面中的 Child Page 事件。第 3 步:在您的子控件中调用事件,这将触发事件/处理程序 第 4 步:在父页面中,刷新更新面板。

希望有效。

于 2013-10-01T05:00:16.280 回答