0

次のようなレポートを表示するために ssrs を指す RadHtmlPlaceholder を持つ Silverlight アプリケーションがあります。

<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 を挿入する必要があります。history オブジェクトには、ボタンを有効にする必要があるかどうかを評価するために使用できる length プロパティもあります。

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 に答える