0

グリッドを印刷する機能があります。グリッドがたくさんあります。以下のコードでは、グリッド名がハードコードされています(コードビハインド)。

asp.netボタンが押されたときに、グリッドビュー名をパラメーターとして渡すことはできますか?

次に、拡張可能で素晴らしいすべてのグリッドを処理する1つの印刷関数を使用できます。

マークアップ:

<input type="button" id="btnPrint" value="Print" onclick="PrintGridData()" />

コードビハインド:

protected void PrintCurrentPage(object sender, EventArgs e) // Print Current Page
        {

            try
            {


                StringWriter sw = new StringWriter();
                HtmlTextWriter hw = new HtmlTextWriter(sw);
                GridViewErrorReport.RenderControl(hw);
                string gridHTML = sw.ToString().Replace("\"", "'")
                    .Replace(System.Environment.NewLine, "");
                StringBuilder sb = new StringBuilder();
                sb.Append("<script type = 'text/javascript'>");
                sb.Append("window.onload = new function(){");
                sb.Append("var printWin = window.open('', '', 'left=0");
                sb.Append(",top=0,width=1000,height=600,status=0');");
                sb.Append("printWin.document.write(\"");
                sb.Append(gridHTML);
                sb.Append("\");");
                sb.Append("printWin.document.close();");
                sb.Append("printWin.focus();");
                sb.Append("printWin.print();");
                sb.Append("printWin.close();};");
                sb.Append("</script>");
                Page.ClientScript.RegisterStartupScript(this.GetType(), "GridPrint", sb.ToString());


            }

JavaScript:

<script type="text/javascript">
    function PrintGridData() {
        var prtGrid = document.getElementById('<%=GridViewErrorReport.ClientID %>');
        prtGrid.border = 0;
        var prtwin = window.open('', 'PrintGridViewData', 'left=100,top=100,width=1000,height=1000,tollbar=0,scrollbars=1,status=0,resizable=1');
        prtwin.document.write(prtGrid.outerHTML);
        prtwin.document.close();
        prtwin.focus();
        prtwin.print();
        prtwin.close();
    }
</script>
4

1 に答える 1

1

はい、可能です。IDを関数に渡し、それを使用してページからグリッドコントロールを取得できます。

「myGridId」が関数に渡されたとします...

これで、コードは次のようになります。

StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridViewErrorReport.RenderControl(hw);
string gridHTML = sw.ToString().Replace("\"", "'").Replace(System.Environment.NewLine, "");
StringBuilder sb = new StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("window.onload = new function(){");
sb.Append("var printWin = window.open('', '', 'left=0");
sb.Append(",top=0,width=1000,height=600,status=0');");
sb.Append("printWin.document.write(\"");
GridView gv = (GridView)this.FindControl("myGridId");
sb.Append(gv);
sb.Append("\");");
sb.Append("printWin.document.close();");
sb.Append("printWin.focus();");
sb.Append("printWin.print();");
sb.Append("printWin.close();};");
sb.Append("</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), "GridPrint", sb.ToString());
于 2012-10-20T20:27:37.407 に答える