【问题标题】:call child control on parent page for an update of an updatepanel在父页面上调用子控件以更新更新面板
【发布时间】:2013-10-02 03:03:18
【问题描述】:

我将 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>

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

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

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

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

【问题讨论】:

  • 您的子页面是什么?是用户控件吗?
  • 是的 tab1 和 tab2 是两个不同的用户控件。

标签: c# asp.net .net-4.0 tabs telerik


【解决方案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();
    }
    }

【讨论】:

  • 这里是我应该知道的事情之一,我只是忘记了。感谢 Hiren 的帮助。非常感谢。
【解决方案2】:

如果我正确理解您的问题 1.更新面板在父页面(希望完全是一个aspx页面) 2.标签在子页面中(希望完全是用户控制)

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

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

希望有效。

【讨论】:

  • 嘿 Sreenath 我编辑了我的问题,希望能澄清更多。更新面板位于用户控件上。所以 tab1 和 tab2 是他们自己的用户控件,他们都有自己的更新面板。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
相关资源
最近更新 更多