Как перенести этот код из ASP. NET на ASP. NET MVC для печати отчетов Crystal - PullRequest
0 голосов
/ 21 июня 2020

У меня есть приложение ASP. NET и несколько отчетов Crystal, и мне нужно передать следующий код из ASP. NET и использовать ту же функциональность в MVC, я использую структуру entity.

это код form.aspx, который я отправляю значения параметров в другую форму с помощью гиперссылки и NavigateUrl:

<asp:GridView ID="GridView1"  Width="100%" CssClass="dynamicTable table  table-striped table-bordered table-condensed"  style="color:#000000;background-color:#f4eb3c  " AutoGenerateColumns="false"  runat="server">
            <Columns>
                <asp:TemplateField>
                    <HeaderTemplate>Print</HeaderTemplate>
                    <ItemTemplate>
                        <div style="width:100%"> <asp:HyperLink ID="HyperLink1"  NavigateUrl='<%#"/RPT/WebForm1.aspx?order_id=" +Eval("order number")+"&DEPT ID=" +Eval("DEPTID")+"&Test Id=" +Eval("Test Id")+"&Culture=" +Eval("Culture")%>' runat="server">Print Result</asp:HyperLink></div>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate>Patient MRN#</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblTest" runat="server" Text='<%# Eval("Patient No") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate>Order Number</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblTest" runat="server" Text='<%# Eval("order number") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate>Patient Name</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblTest" runat="server" Text='<%# Eval("Patient Name") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate>AGE</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblTest" runat="server" Text='<%# Eval("AGE") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate>Request Date</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblTest" runat="server" Text='<%# Eval("Collection Date") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate>Report Date</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblTest" runat="server" Text='<%# Eval("Report Date") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                
                 <asp:TemplateField>
                    <HeaderTemplate>Test Name</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblTest" runat="server" Text='<%# Eval("Test_Name") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
               
                <asp:TemplateField>
                    <HeaderTemplate>Result</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblTest" runat="server" Text='<%# Eval("Result") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

                <asp:TemplateField>
                    <HeaderTemplate>Ref.Range From</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Reflow" runat="server" Text='<%# Eval("Low Range") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

                <asp:TemplateField>
                    <HeaderTemplate>To</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Reflow" runat="server" Text='<%# Eval("High Range") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

                <asp:TemplateField>
                    <HeaderTemplate>Text Range</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Reflow" runat="server" Text='<%# Eval("Text Range") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

                <asp:TemplateField>
                    <HeaderTemplate>REQ. FORM NO.</HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="req" runat="server" Text='<%# Eval("REQ FORM NUMBER") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate></HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblTest" Visible="false" runat="server" Text='<%# Eval("DEPTID") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate></HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="LblTest" Visible="false" runat="server" Text='<%# Eval("Culture") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                
            </Columns>
            <EmptyDataTemplate>No Data Found   -    لم يتم العثور على بيانات</EmptyDataTemplate>
        </asp:GridView>

Это ASP. NET webform.aspx. cs code:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {

            TXTORDERID.Text = Request.QueryString["order_number"].ToString();
            TXTDEPTID.Text = Request.QueryString["DEPTID"].ToString();
            TXTTESTID.Text = Request.QueryString["Test_Id"].ToString();
            TXTCULTURE.Text = Request.QueryString["Culture"].ToString();
            ReportDocument reportDocument = new ReportDocument();
            ParameterFields paramFields = new ParameterFields();
            ParameterField paramField = new ParameterField();
            ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
            ParameterDiscreteValue paramDiscreteValue1 = new ParameterDiscreteValue();
            ParameterField parameterField1 = new ParameterField();
            ParameterDiscreteValue parameterDiscreteValue1 = new ParameterDiscreteValue();
            ParameterFields parameterFields = new ParameterFields();


            if (Convert.ToInt32(TXTDEPTID.Text) == 7 && Convert.ToInt32(TXTCULTURE.Text) == 1)
            {
                TXTPOSITIVE.Text = Request.QueryString["Positive"].ToString();
            }
            if (Session["UserCustid"] != null && Convert.ToInt32(Session["UserCustid"]) > 0)
            {
                if (Convert.ToInt32(TXTDEPTID.Text) == 1 || Convert.ToInt32(TXTDEPTID.Text) == 2 || Convert.ToInt32(TXTDEPTID.Text) == 3 || Convert.ToInt32(TXTDEPTID.Text) == 4)
                {

                    paramField.Name = "@ORDER_ID";
                    paramDiscreteValue.Value = TXTORDERID.Text.ToString();
                    paramField.CurrentValues.Add(paramDiscreteValue);
                    paramFields.Add(paramField);

                    paramField = new ParameterField(); // <-- This line is added
                    paramDiscreteValue = new ParameterDiscreteValue();  // <-- This line is added
                    paramField.Name = "@deptid";
                    paramDiscreteValue1.Value = TXTDEPTID.Text.ToString();
                    paramField.CurrentValues.Add(paramDiscreteValue1);
                    paramFields.Add(paramField);

                    CrystalReportViewer1.ParameterFieldInfo = paramFields;
                    CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
                    CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
                    reportDocument.Load(Server.MapPath("~/RPT/RPT_RESULTS.rpt"));
                    CrystalReportViewer1.ReportSource = reportDocument;
                    reportDocument.SetDatabaseLogon("DBadmin", "1111");
                    var connectionInfo = new ConnectionInfo();
                    connectionInfo.ServerName = "DB";
                    connectionInfo.DatabaseName = "DB";
                    connectionInfo.Password = "1111";
                    connectionInfo.UserID = "DBadmin";
                    connectionInfo.Type = ConnectionInfoType.SQL;
                    connectionInfo.IntegratedSecurity = false;
                    for (int i = 0; i < CrystalReportViewer1.LogOnInfo.Count; i++)
                    {
                        CrystalReportViewer1.LogOnInfo[i].ConnectionInfo = connectionInfo;
                    }
                }

                else if (Convert.ToInt32(TXTDEPTID.Text) == 5)
                {

                    paramField.Name = "@Criteria";
                    paramDiscreteValue.Value = TXTORDERID.Text.ToString();
                    paramField.CurrentValues.Add(paramDiscreteValue);
                    paramFields.Add(paramField);

                    paramField = new ParameterField(); // <-- This line is added
                    paramDiscreteValue = new ParameterDiscreteValue();  // <-- This line is added
                    paramField.Name = "@TESTID";
                    paramDiscreteValue1.Value = TXTDEPTID.Text.ToString();
                    paramField.CurrentValues.Add(paramDiscreteValue1);
                    paramFields.Add(paramField);

                    CrystalReportViewer1.ParameterFieldInfo = paramFields;
                    CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
                    CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
                    reportDocument.Load(Server.MapPath("~/RPT/RPT_HISTO_RESULT.rpt"));
                    CrystalReportViewer1.ReportSource = reportDocument;
                    reportDocument.SetDatabaseLogon("DBadmin", "1111");
                    var connectionInfo = new ConnectionInfo();
                    connectionInfo.ServerName = "DB";
                    connectionInfo.DatabaseName = "DB";
                    connectionInfo.Password = "1111";
                    connectionInfo.UserID = "DBadmin";
                    connectionInfo.Type = ConnectionInfoType.SQL;
                    connectionInfo.IntegratedSecurity = false;
                    for (int i = 0; i < CrystalReportViewer1.LogOnInfo.Count; i++)
                    {
                        CrystalReportViewer1.LogOnInfo[i].ConnectionInfo = connectionInfo;
                    }
                }
                else if (Convert.ToInt32(TXTDEPTID.Text) == 6 && Convert.ToInt32(TXTTESTID.Text) == 1106)
                {
                    paramField.Name = "@Criteria";
                    paramDiscreteValue.Value = TXTORDERID.Text.ToString();
                    paramField.CurrentValues.Add(paramDiscreteValue);
                    paramFields.Add(paramField);

                    

                    CrystalReportViewer1.ParameterFieldInfo = paramFields;
                    CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
                    reportDocument.Load(Server.MapPath("~/RPT/RPT_SEMEN_RESULT.rpt"));
                    CrystalReportViewer1.ReportSource = reportDocument;
                    reportDocument.SetDatabaseLogon("DBadmin", "1111");
                    var connectionInfo = new ConnectionInfo();
                    connectionInfo.ServerName = "DB";
                    connectionInfo.DatabaseName = "DB";
                    connectionInfo.Password = "1111";
                    connectionInfo.UserID = "DBadmin";
                    connectionInfo.Type = ConnectionInfoType.SQL;
                    connectionInfo.IntegratedSecurity = false;
                    for (int i = 0; i < CrystalReportViewer1.LogOnInfo.Count; i++)
                    {
                        CrystalReportViewer1.LogOnInfo[i].ConnectionInfo = connectionInfo;
                    }
                }

IN ASP. NET MVC:

1- Я создал файл webform.aspx.cs и использовал тот же код выше в проекте MVC

2- Я создал код контроллера и вижу, что это код просмотра:

image

3- это код контроллера:

public ActionResult CashData(int id)
        {
            
            var tables = new Orders_Tables
            {
                testsRanges = db.TestsRanges.ToList(),

                LabResults = db.LAB_RESULTS.Where(o => o.ORDER_ID == id)
                             .Include(p => p.LabTests)
                             .Include(t => t.Patients).ToList(),
       
                
                LabParaResult = db.LAB_PARA_RESULTS.Where(o => o.ORDER_ID == id).Include(t => t.Patients).Include(t => t.LabTests).Include(c => c.Customers).ToList(),
                LabCultureResults = db.LAB_CULTURE_RESULT.Where(o => o.ORDER_ID == id).Include(t => t.Patients).Include(t => t.LabTests).Include(c => c.Customers).ToList(),
                LabMicroResults = db.LAB_MICRO_NEGATIVE_RESULT.Where(o => o.ORDER_ID == id).ToList(),
                labCashView = db.LAB_RESULT_CASH_VIEW.Where(o => o.order_number == id).ToList(),
                LabParasitologyView = db.LAB_PARASITOLOGY_VIEW.Where(o => o.order_number == id).ToList(),
                LabCulturesView = db.LAB_CULTURES_VIEW.Where(o => o.ORDER_ID == id).ToList(),
                LabMicroView = db.LAB_MICRO_VIEW.Where(o => o.ORDER_ID == id).ToList(),
                LabHistopathologyView = db.LAB_HISTOPATHOLOGY_VIEW.Where(o => o.ORDER_ID == id).ToList(),
                LabHistoResult = db.LAB_HISTO_RESULT.Where(o => o.ORDER_ID == id).ToList(),
                labtests = db.LabTests.ToList(),
               // patients = db.Patients.ToList()
            };

4- i создал класс LABCASHVIEW

Я проверил множество статей на сайте stackoverflow, и один ответ, который он написал, вы можете использовать тот же дизайн из ASP. NET в ASP. NET MVC

  • создайте веб-форму в своем проекте MVC и передайте параметры из MVC веб-форме, тогда она будет работать и печатать кристалл отчеты такие же, как ASP. NET. Итак, я сделал то, что он сказал, но теперь мне нужен последний шаг, как передать следующие параметры из представления MVC в веб-форму и распечатать отчеты кристаллов:

Мне нужно отправить выбранный номер_порядка, dept_Id , Test_Id и параметры культуры из выбранной строки в веб-форму и отчет о печати кристалла Я использовал тег <a> и href="" to

<a href="/RPT/WebForm1.aspx/@LABCASHVIEW.FirstOrDefault().order_number"></a>

, но как передать весь этот параметр один раз в веб-форму и избежать объекта ссылки на ошибку не установлен в экземпляр объекта и сначала проверьте, не являются ли параметры нулевыми?

это вопрос и ответ, но без подробностей, как вызывать отчеты Crystal и как передавать несколько параметров в отчет Crystal, например, если я необходимо распечатать selected order_id или выбранный счет-фактуру:

UPDATE:

Я дал значения stati c для этих текстовых полей в webform.aspx.cs и его печать сейчас:

            TXTORDERID.Text = "2000000054";
            TXTDEPTID.Text = "1";
            TXTTESTID.Text = "46";
            TXTCULTURE.Text = "2";

теперь последняя проблема, как отправить значение для этих текстовых полей в веб-форме из MVC в виде следующего:

TXTORDERID.Text = Request.QueryString["labCashView.order_number"].ToString();
 TXTDEPTID.Text = Request.QueryString["labCashView.DEPTID"].ToString();
 TXTTESTID.Text = Request.QueryString["labCashView.Test_Id"].ToString();
 TXTCULTURE.Text = Request.QueryString["labCashView.Culture"].ToString();

1 Ответ

0 голосов
/ 22 июня 2020

Как я вижу, вы выполнили все, и вам нужно передать параметры из View в отчеты Crystal, попробуйте это решение:

<a href="/RPT/WebForm1.aspx/?order_number=@Model.labCashView.FirstOrDefault().order_number&deptid=@Model.labCashView.FirstOrDefault().DEPTID&testid=@Model.labCashView.FirstOrDefault().Test_Id&Culture=@Model.labCashView.FirstOrDefault().Culture">Print Result</a>

Затем в webform.aspx.cs напишите следующий код и используйте значение, переданное из ссылка:

TXTORDERID.Text = Request.QueryString["order_number"].ToString();
            TXTDEPTID.Text = Request.QueryString["deptid"].ToString();
            TXTTESTID.Text = Request.QueryString["testid"].ToString();
            TXTCULTURE.Text = Request.QueryString["Culture"].ToString(); 

Надеюсь, это поможет вам и распечатайте отчеты о кристаллах в вашем MVC представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...