Как распечатать несколько отчетов с использованием ASP.NET GridView, RDLC? - PullRequest
1 голос
/ 20 января 2011

Я хочу напечатать отчет на основе флажка GridView.Если было выбрано 3 строки, должно быть 3 отчета.Мой код похож на этот ...

protected void btn_Print_Click(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            try
            {
                foreach (GridViewRow gvr in grdRV.Rows)
                {
                    RadioButton rbID = (RadioButton)gvr.FindControl("rbID") as RadioButton;

                    if (rbID != null && rbID.Checked)
                    {
                        string sID = grdRV.DataKeys[gvr.RowIndex].Value.ToString().Trim();

                        if (rbl_Print.SelectedValue == "0")
                        {
                            SMTP(sID);
                        }
                        else if (rbl_Print.SelectedValue == "1")
                        {
                            Material(sID);
                        }
                    }
                 }
            }
            catch (Exception ex)
            {
                Session["error"] = ex.Message;
                Response.Redirect("MessageBoard.aspx");
            }
        }
    }

private void Material(string sID)
    {            

        string querystring = "../pmis/Reports/RptRFQMatV.aspx?RFQNo=" + lblRFQNo.Text.ToString() + "&ID=" + sID;

        Random r = new Random();            
        string Script = "";
        Script += "<script language=JavaScript id='PopupWindow'>";
        Script += "confirmWin = window.open(' " + querystring + "','" + r.Next() + "','scrollbars=yes,resizable=1, width=960,height=500,left=50,top=130,status');";
        Script += "confirmWin.Setfocus()</script>";

        //ClientScript.RegisterStartupScript(typeof(string), "PopupScript", "PopupWindow");
        if (!ClientScript.IsClientScriptBlockRegistered("PopupWindow"))
            ClientScript.RegisterClientScriptBlock(typeof(string), "PopupWindow", Script);
    }

В настоящее время этот код может распечатать отчет только в последней строке ... Кто может мне помочь?Спасибо

1 Ответ

2 голосов
/ 20 января 2011

Я протестировал это, и он действительно открывает три окна, вам придется немного его настроить, передав список выбранных идентификаторов в Material, чтобы вы вызывали Material только один раз.Внутри материала в вашей обработке строки, после следующей строки,

Script += "<script language=JavaScript id='PopupWindow'>";

добавьте цикл for, который проходит через выбранные идентификаторы и добавляет window.open.Итак, следующие строки должны быть в цикле for / foreach

string querystring = "../pmis/Reports/RptRFQMatV.aspx?RFQNo=" + lblRFQNo.Text.ToString() + "&ID=" + sID;


Script += "confirmWin = window.open(' " + querystring + "','" + r.Next() + "','scrollbars=yes,resizable=1, width=960,height=500,left=50,top=130,status');";

, а затем следуют следующие строки и находятся вне цикла for.

Script += "confirmWin.Setfocus()</script>";

        //ClientScript.RegisterStartupScript(typeof(string), "PopupScript", "PopupWindow");
        if (!ClientScript.IsClientScriptBlockRegistered("PopupWindow"))
            ClientScript.RegisterClientScriptBlock(typeof(string), "PopupWindow", Script);

Это мой пример и работает,Кроме того, было бы лучше, если бы вы использовали StringBuilder вместо строки + =

        string Script = "";
        Script += "<script language=JavaScript id='PopupWindow'>";
        Script += "window.open('www.google.com.au', '1','scrollbars=yes,resizable=1, width=960,height=500,left=50,top=130,status');";
        Script += "window.open('www.yahoo.com','2','scrollbars=yes,resizable=1, width=960,height=500,left=50,top=130,status');";
        Script += "window.open('www.stackoverflow.com','3', 'scrollbars=yes,resizable=1, width=960,height=500,left=50,top=130,status');";
        Script += "</script>";

        if (!ClientScript.IsClientScriptBlockRegistered("PopupWindow"))
            ClientScript.RegisterClientScriptBlock(typeof(string), "PopupWindow", Script);

Надеюсь, это поможет.

...