0

我有一个 Silverlight 应用程序,它有一个 RadHtmlPlaceholder 指向 ssrs 以显示如下报告:

<telerik:RadHtmlPlaceholder SourceUrl="http://serverName/ReportServer/Pages/ReportViewer.aspx?/Northwind/Employees&amp;rs:Command=render" />

这工作得很好,但是当我有一个允许您向下钻取以显示子报表的报表时,没有办法返回父报表而不必再次加载整个批次。似乎没有打开导航返回按钮工具栏选项的选项,而且我已经看到了通过使用 javascript 将窗口位置设置回历史记录中的一个来实现返回按钮的其他方法,但显然这不会在 Silverlight 应用程序中工作。反正有实现导航返回按钮吗?

4

1 回答 1

1

在 Telerik 论坛中查看此主题:http ://www.telerik.com/community/forums/silverlight/htmlplaceholder/html-place-holder-back-forward-refresh.aspx

基本上,您需要从演示者那里获得 IFrame 的句柄并注入一些 JavaScript。历史对象还有一个长度属性,你可以使用它来评估你的按钮是否应该被启用。

public MainPage()
        {
            InitializeComponent();

            // Get the IFrame from the HtmlPresenter 
            HtmlElement iframe = (HtmlElement)htmlPlaceholder.HtmlPresenter.Children[0];
            // Set an ID to the IFrame so that can be used later when calling the javascript 
            iframe.SetAttribute("id", "myIFrame");
        }

        private void Refresh_Click(object sender, RoutedEventArgs e)
        {
            // Code to be executed 
            string code = "document.getElementById('myIFrame').contentWindow.location.reload(true);";
            HtmlPage.Window.Eval(code); 
        }

        private void Back_Click(object sender, RoutedEventArgs e)
        {
            // Code to be executed 
            string code = "document.getElementById('myIFrame').contentWindow.history.back();";
            HtmlPage.Window.Eval(code); 
        }

        private void Forward_Click(object sender, RoutedEventArgs e)
        {
            // Code to be executed 
            string code = "document.getElementById('myIFrame').contentWindow.history.forward();";
            HtmlPage.Window.Eval(code); 
        }
}
于 2012-06-25T19:48:18.270 回答