مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

محمد ملکی

عضویت از 1394/03/02

عدم نمایش گزارش stimul repot در پارشیال ویو

  • شنبه 12 تیر 1395
  • 17:24
تشکر میکنم

سلام من یه فرم به صورت زیر دارم فرمم ایجکسی هست

فرمم ایجکسی هست

 @using (Ajax.BeginForm("Income", "Building", new { entity =Model}, new AjaxOptions { UpdateTargetId = "result", HttpMethod = "POST", OnSuccess = "success" }))
    {

طولانیه همه کدها رو نزاشتم

ببینید وقتی دکمه گزارش رو میزنم با جاوا میگم برو توو یه اکشن که همون گزارشه منه و یه پارشیال برگردونه که همان گزارش استیمولم هست

این کد دکمه

  $("#btnReport").click(function () {

            var lst = $("#gridd").data("kendoGrid").dataSource.data();
            var start = $("#StartDate").val();
            var end = $("#EndDate").val();
            
            $.ajax({
                type: "POST",
                url: '@Url.Action("IncomeReport", "Building")',
                data: JSON.stringify({ lst: lst,start:start,end:end }),
                contentType: "application/json; charset=utf-8",
                success: function () {
                    alert('hello');

                }
            });
        });

اینم کدهای اکشنم

 public ActionResult IncomeReport(List<BuildingIncome> lst, Nullable<DateTime> start, Nullable<DateTime> end)
        {
            TempData["listReportIncome"] = lst;
            TempData["start"] = start;
            TempData["end"] = end;
            return View();
            
        }

        public ActionResult LoadReportIncome()
        {
            Nullable<DateTime> start = null;
            Nullable<DateTime> end = null;
            List<BuildingIncome> listReport = new List<BuildingIncome>();
            

            if (TempData.Count > 0 && TempData["start"] != null)
                start = (DateTime)TempData["start"];

            if (TempData.Count > 0 && TempData["end"] != null)
                end = (DateTime)TempData["end"];


            if (TempData.Count > 0 && TempData["listReportIncome"] != null)
                listReport = (List<BuildingIncome>)TempData["listReportIncome"];
           
            
            List<HeaderReport> lstHeader = new List<HeaderReport>();
            lstHeader.Add(new HeaderReport() { StartDate = start , EndDate = end });
                     
            StiReport report = new StiReport();
            string Path = Server.MapPath("~/Report/ReportIncome2.mrt");
            report.Load(Path);
            report.RegBusinessObject("IncomeReport", listReport);

            report.RegBusinessObject("Header", lstHeader);

            report.Dictionary.SynchronizeBusinessObjects(2);

            return StiMvcViewer.GetReportSnapshotResult(HttpContext, report);
        }

وارد اکشن اول میشه اما متاسفانه اصلا وارد اکشن

LoadReportIncome نمیشه

اینم پارشیال ویو گزارش

@using System.Web.UI.WebControls;
@using Stimulsoft.Report.Mvc;

<div>

    @Html.Stimulsoft().RenderMvcViewerScripts()
    @Html.Stimulsoft().StiMvcViewer("MyViewr", new StiMvcViewerOptions()

   {
       ActionGetReportSnapshot = "LoadReportIncome",
       ActionViewerEvent = "ViewerEvent",

       Theme = StiTheme.Windows7,
       ActionPrintReport = "PrintReport",
       ActionExportReport = "ExportReport",
       ToolbarBackgroundColor = System.Drawing.Color.Silver
   })
</div>

 

آقای مدائنی چیکار کنم؟ یعنی گزارش باید توو یه ویو جدا باشه و توو پارشیال نمیشه؟ پس توو فرم ایجکس مثا الان چیکار باید کرد؟

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 12 تیر 1395
  • 18:09

بالای اکشن صفت HttpPost بزارید

کاربر سایت

محمد ملکی

عضویت از 1394/03/02

  • یکشنبه 13 تیر 1395
  • 00:12

آقای مدائنی httppost هم گذاشتم نشد

میشه یه کم با دقت تر ببینید (شما حرفه ای هستید)

ببینید یه فرم ایجکسی دارم ایناش

 @using (Ajax.BeginForm("Income", "Building", new { entity =Model}, new AjaxOptions { UpdateTargetId = "result", HttpMethod = "POST", OnSuccess = "success" }))
    {

توو دکمه گزارش میگم ایجکسی بره توو یه اکشن

  $("#btnReport").click(function () {

            var lst = $("#gridd").data("kendoGrid").dataSource.data();
            var start = $("#StartDate").val();
            var end = $("#EndDate").val();
            
            $.ajax({
                type: "POST",
                url: '@Url.Action("IncomeReport", "Building")',
                data: JSON.stringify({ lst: lst,start:start,end:end }),
                contentType: "application/json; charset=utf-8",
                success: function (result) {
                    $("#result").html(result);

                }
            });
        });

اینم کد گزارشم  ببینید وقتی دکمه گزارش رو میزنه میاد توو IncomeReport

 public ActionResult IncomeReport(List<BuildingIncome> lst, Nullable<DateTime> start, Nullable<DateTime> end)
        {
            TempData["listReportIncome"] = lst;
            TempData["start"] = start;
            TempData["end"] = end;
            return PartialView("_IncomeReport");
            
        }

      [HttpPost]
        public ActionResult LoadReportIncome()
        {
            Nullable<DateTime> start = null;
            Nullable<DateTime> end = null;
            List<BuildingIncome> listReport = new List<BuildingIncome>();


            if (TempData.Count > 0 && TempData["start"] != null)
                start = (DateTime)TempData["start"];

            if (TempData.Count > 0 && TempData["end"] != null)
                end = (DateTime)TempData["end"];

            
            if (TempData.Count > 0 && TempData["listReportIncome"] != null)
                listReport = (List<BuildingIncome>)TempData["listReportIncome"];


            List<HeaderReport> lstHeader = new List<HeaderReport>();
            lstHeader.Add(new HeaderReport() { StartDate = start, EndDate = end });

            StiReport report = new StiReport();
            string Path = Server.MapPath("~/Report/ReportIncome2.mrt");
            report.Load(Path);
            report.RegBusinessObject("IncomeReport", listReport);

            report.RegBusinessObject("lstHeader", lstHeader);

            report.Dictionary.SynchronizeBusinessObjects(2);

            return StiMvcViewer.GetReportSnapshotResult(HttpContext, report);
        }
        

اینم پارشیال ویو گزارش

@using System.Web.UI.WebControls;
@using Stimulsoft.Report.Mvc;

<div>
    @Html.Stimulsoft().RenderMvcViewerScripts()
    @Html.Stimulsoft().StiMvcViewer("MyViewr", new StiMvcViewerOptions()

   {
       ActionGetReportSnapshot = "LoadReportIncome",
       ActionViewerEvent = "ViewerEvent",

       Theme = StiTheme.Windows7,
       ActionPrintReport = "PrintReport",
       ActionExportReport = "ExportReport",
       ToolbarBackgroundColor = System.Drawing.Color.Silver
   })
</div>

وقتی دکمه گزارش رو میزنم وارد اکشن IncomeReport میشه و میاد پارشیال ویو رو که همون گزارش هست خالی نشون میده و اصلا وارد اکشن LoadReportIncome نمیشه ، شما گفتید [HttpPost] بزارم بالاش گذاشتم باز نشد ببینید خالی نشون میده

واقعاً کچلم کرده، نمیدونم چیکار کنم

این پروژه مرحله به مرحله اش دقم داره میده

 

کاربر سایت

محمد ملکی

عضویت از 1394/03/02

  • یکشنبه 13 تیر 1395
  • 00:35

راستی آقای مدائنی نکته جال اینه که وقتی توو مرورگر تو url صفحه دستی می نویسم IncomReport قشنگ وارد هر دو اکشن میشه و گزارش رو به صورت زیر نشون میده

ولی اینجوری به کارم نمیاد ، باید توو همون فرم ایجکسی که براتون شرح دادم باشه

نمیدونید ایراد کارم چیه؟

 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 13 تیر 1395
  • 06:14

چرا برای گزارش از Ajax استفاده کردید ؟

چرا مستقیم آدرس اکشن Report را ندادید ؟

کاربر سایت

محمد ملکی

عضویت از 1394/03/02

  • یکشنبه 13 تیر 1395
  • 09:41

چون توو فرمم جستجو و .. ایجکسی هست اومدیم کاربر یهسرچی کرد بعد دکمه گزارش رو زد

دکمه گزارش رو میزنه منظورتون اینه چرا ایجکسی فرستادم؟

خب چه جوری بفرستم

یه نکته اینکه آقای مدائنی من اطلاعات گریدمو توو جاوا اسکریپ دارم (لیست خود مدل الکی null هست همه bind ها و .. رو چک کردم مشکلی نداشت )مجبورم برم توو جاوا اسکریپ داده های گرید رو در بیارم و ایجکس بفرستم

حالا شما راه حل دیگه ایی دارید بگید چه جوری بفرستم

ممنونم

کاربر سایت

محمد ملکی

عضویت از 1394/03/02

  • یکشنبه 13 تیر 1395
  • 10:00

آقای مدائنی من یه کار کردم ببینید

گزارش رو میزنه میگم برو توو یه اکشن و مقادیر رو بفرست توو tempdata بعد از اون جا برو توو اکشن گزارش

 public ActionResult IncomeReport1(List<BuildingIncome> lst, Nullable<DateTime> start, Nullable<DateTime> end)
        {
            TempData["listReportIncome"] = lst;
            TempData["start"] = start;
            TempData["end"] = end;
            return RedirectToAction("IncomeReport", new System.Web.Routing.RouteValueDictionary(
                                                    new { controller = "Building", action = "IncomeReport"}));
        }
 public ActionResult IncomeReport()
        {
           
            return View();

        }
    
        public ActionResult LoadReportIncome()
        {
            Nullable<DateTime> start = null;
            Nullable<DateTime> end = null;
            List<BuildingIncome> listReport = new List<BuildingIncome>();


            if (TempData.Count > 0 && TempData["start"] != null)
                start = (DateTime)TempData["start"];

            if (TempData.Count > 0 && TempData["end"] != null)
                end = (DateTime)TempData["end"];


            
            if (TempData.Count > 0 && TempData["listReportIncome"] != null)
                listReport = (List<BuildingIncome>)TempData["listReportIncome"];

         
            List<HeaderReport> lstHeader = new List<HeaderReport>();
            lstHeader.Add(new HeaderReport() { StartDate = start, EndDate = end });

            StiReport report = new StiReport();
            string Path = Server.MapPath("~/Report/ReportIncome2.mrt");
            report.Load(Path);
            report.Compile();
           

            report.RegBusinessObject("IncomeReport", listReport);

            report.RegBusinessObject("lstHeader", lstHeader);

           // report.Dictionary.SynchronizeBusinessObjects(2);

            return StiMvcViewer.GetReportSnapshotResult(HttpContext, report);

         
        }

       اما متاسفانه باز وارد اکشن گزارش نمیشه و صفحه سفید نشون میده گزارش خالی نشون میده

 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 13 تیر 1395
  • 15:06

والا کاملا گیج شدم

یک نمونه ضمیمه کنید تا براتون درست کنم

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)