从RadTabStrip中的另一个用户控件加载用户控件

时间:2012-04-04 17:59:54

标签: telerik controls

我正在使用Telerik Rad标签控件,我正在加载两个用户控件A,B。现在来自用户控件A,我想加载或调用或使用一些查询字符串参数重定向到用户控件B.

我该怎么做?

下面是标记:

 <telerik:radtabstrip id="RadTabStrip1" runat="server" skin="Black" 
multipageid="rmpProgressReports" selectedindex="0" cssclass="tabStrip" OnTabClick="RadTabStrip1_TabClick">
            <Tabs>
                <telerik:RadTab Text="DASHBOARD" PageViewID="rpvDashBoard" TabIndex="0" Selected="True" SelectedCssClass="SelectedTab">
                </telerik:RadTab>
                <telerik:RadTab Text="REPORT DETAILS" PageViewID="rpvReportDetails" TabIndex="1" SelectedCssClass="SelectedTab">
                </telerik:RadTab>
            </Tabs>
        </telerik:radtabstrip>
<telerik:radmultipage id="rmpProgressReports" runat="server" selectedindex="0">
            <telerik:RadPageView ID="rpvDashBoard" runat="server" TabIndex="0">
            <uc1:PRDashBoards ID="PRDashBoards" runat="server" />
            </telerik:RadPageView>
            <telerik:RadPageView ID="rpvReportDetails" runat="server" TabIndex="1">
            <uc2:PRDetails ID="PRDetails" runat="server" />
            </telerik:RadPageView>
        </telerik:radmultipage>

1 个答案:

答案 0 :(得分:2)

[开始编辑]

在Primary控件上,您可以创建一个事件处理程序。如果要从主控件执行该事件处理程序(例如,单击按钮),它将在发送页面上执行代码。

声明自定义事件处理程序

public delegate void ControlChangedEventHandler(string QueryString);

然后在我的第二个控制中,delcare一个公共事件处理程序进行更改:

public ControlChangedEventHandler OnControlChanged;   

然后在提交控件时,检查是否已设置OnControlChanged然后执行。

    if (OnControlChanged != null)
    {
        OnControlChanged(QueryStringParameter);
    }

现在在主控件中,创建一个处理工作的函数

public void OnControlChanged(string QueryString)
{
    RadTabStrip1.SelectedIndex = 1;
    rmpProgressReports.SelectedIndex = 1;
    PRDetails.LoadFromQuery(QueryString);
}

然后将该函数指定为用户控件的OnAddressChanged的事件处理程序。

PRDashBoards.OnControlChanged += new ControlChangedEventHandler(OnControlChanged);

[基于选项卡点击的旧答案]

您可以将RadTabStrip的AutoPostBack属性设置为True,以允许触发OnTabClick功能。

从OnTabClick函数内部,您可以访问UserControl的公共属性或函数并将数据传递给它,例如,创建公共函数,然后根据参数使数据反弹。例如:

protected void RadTabStrip1_TabClick(object sender, RadTabStripEventArgs e)
{
    if (e.Tab.TabIndex == 0)
    {
        PRDashBoards.DoSomething();
    }
    else if (e.Tab.TabIndex == 1)
    {
        PRDetails.DoSomethingElse();
    }
}