2

Webアプリケーションにasp:Wizardコントロールがあります。ウィザード内の任意のステップで印刷でき、現在のステップだけでなく、そのステップまでのすべてのステップを印刷できる必要があります。

すべてのステップページに印刷ボタンを追加し、javascript:window.Print()を呼び出そうとしましたが、現在のステップのみが印刷されます。

すべての手順を1ページに印刷するにはどうすればよいですか?

PDFルートを進む前に、まずjavascriptでこれを機能させたいと思います。私はこのような何かをしようとしました:

protected void Page_Load(object sender, EventArgs e) 
    { 
        StringWriter sw = new StringWriter(); 
        HtmlTextWriter tw = new HtmlTextWriter(sw); 
        this.WizardStep2.RenderControl(tw); 
        string wizardHtmlContent = sw.ToString().Replace("\r\n", ""); 

        string printScript = @"function printDiv(printpage) 
                                { 
                                var headstr = '<html><head><title></title></head><body>'; 
                                var footstr = '</body>'; 
                                var newstr = printpage; 
                                var oldstr = document.body.innerHTML; 
                                document.body.innerHTML = headstr+newstr+footstr; 
                                window.print();  
                                document.body.innerHTML = oldstr; 
                                return false; 
                                }"; 


        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "PrentDiv", printScript, true); 
        this.Button1.Attributes.Add("onclick", "printDiv('" + wizardHtmlContent + "');"); 

    }

そしてaspxの場合:

<form id="form1" runat="server"> 
<div> 
     <asp:Wizard ID="Wizard1" runat="server"> 
        <WizardSteps> 
            <asp:WizardStep ID="WizardStep1" runat="server" Title="Step 1"> 
                step1 
            </asp:WizardStep> 
            <asp:WizardStep ID="WizardStep2" runat="server" Title="Step 2"> 
                step2 
            </asp:WizardStep> 
        </WizardSteps> 
    </asp:Wizard> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 
</div> 
</form>

しかし、ウィザードコントロールをレンダリングしようとすると、3行目にrunat = serverエラーが表示されないため、新しいウィンドウを作成してから、印刷する前に文字列を出力する必要があると思いますが、取得できないようです。その作業...誰かアイデアはありますか?

4

2 に答える 2

1

私は自分の問題の解決策を見つけました、私はそれをクライアント側で達成することができませんでしたが、私はそれをサーバー側で解決することができました。ここで素晴らしい記事を見つけました: ASP.NETでの印刷

ウィザードコントロールのすべてのステップを一度に印刷するように修正しました。ご協力ありがとうございます。

于 2011-08-02T10:51:15.107 に答える
0

ウィザードのステップを1つのページに入れて、すべてがレンダリングされるようにすると、すでに使用しているjavascriptの印刷方法が機能します...

もう1つの方法は、各ステップを参照して印刷ボタンを押すだけです。

私のやり方は、pdfsharpのようなものを使用して、各ステップで生成されるマークアップを与え、マークアップに相当する各ステップのpdfページを作成するように指示することです...そこからユーザーは簡単に表示できるpdfドキュメントを持っています通常のPDFビューアを使用して保存または印刷します。

問題は、javascriptメソッドがdomベースのapi呼び出しを使用して、ページを印刷するようにブラウザーに要求することです。これは、もちろん、最終的には、現在表示しているウィザードステップのみを印刷できることを意味します...pdfメソッドを使用することはユーザーを意味します印刷する前に予想される印刷をプレビューでき、印刷内容をより細かく制御できます。

ただし、もう少しコードが必要です...

pdfsharpはここで見つけることができます:http ://www.pdfsharp.net/Downloads.ashx

あなたがその無料でオープンソースを見ることができるように。

于 2011-07-28T15:31:21.497 に答える