0

我正在使用 Telerik Rad tabstrip 控件,其中我正在加载两个用户控件 A、B。现在从 User Control 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>
4

1 回答 1

2

[开始编辑]

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

声明自定义事件处理程序

public delegate void ControlChangedEventHandler(string QueryString);

然后在我的第二个控件中,为更改提供公共事件处理程序:

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();
    }
}
于 2012-04-05T21:22:08.850 回答