چه تکنولوژی می‌خواهید یاد بگیرید؟

نظرات و انتقادات خود را با ما در میان بگذارید

آپدیت روزانه

بیش از 1500 مطلب آموزشی

نیازهای روز

ارسال چند مدل به Stimulsoft در ASP.Net MVC

در ادامه با نحوه ارسال مدل استان و شهرستان به نرم افزار استیمول سافت جهت ایجاد گزارش به صورت خروجی گروه‌بندی شده می‌پردازیم.

لوگو-استیمول سافت

مقدمه:

اینجا با آموزش گزارش گیری با استفاده از Stimulsoft در ASP.Net MVC و اینجا ارسال پارامتر به استیمول سافت آشنا شدید، یکی از ویژگی‌های هر برنامه ایجاد خروجی متفاوت گزارش‌های آن برنامه است. در پروژه‌های مدل همانند استان و شهرستان و نمایش در خروجی به صورت گروه‌بندی از الزامات آن پروژه خواهد بود که اکنون در این مقاله قصد داریم مدل ارسالی استان و شهرستان به فایل گزارش به صورت نمایش گروه بندی در استیمول سافت آشنا کنیم.

ایجاد پروژه جدید:

 لازم است پروژه جدید ایجاد کنید یا با کلیک در اینجا مثال مقاله قبلی را دانلود کنید. فرض بر این است پروژه جدید ایجاد نموده‌اید، در اولین گام بسته ناگت EntityFramework را نصب کنید.

PM> Install-Package EntityFramework 

در این مثال قصد داریم اطلاعات از دیتابیس خوانده شود، پس در پوشه Models دو کلاس جهت ایجاد جدول‌های استان و شهرستان با نام Province و City ایجاد کنید:

کلاس استان‌ها:

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Multi_Models_With_Stimulsoft_In_ASP.NetMVC.Models
{
    [Table("Province")]
    public class Province
    {
        #region Properties
        /// <summary>
        /// کلید جدول
        /// </summary>
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        /// <summary>
        /// نام استان
        /// </summary>
        public string Name { get; set; }
        #endregion

        #region Key
        /// <summary>
        /// ایجاد رابطه یک به چند به جدول شهرستان‌ها
        /// </summary>
        public virtual IList<City> Citys { get; set; }
        #endregion
    }
}

کلاس شهرستان‌ها:

 using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Multi_Models_With_Stimulsoft_In_ASP.NetMVC.Models
{
    [Table("City")]
    public class City
    {
        #region Properties
        /// <summary>
        /// کلید جدول
        /// </summary>
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        /// <summary>
        /// نام شهرستان
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// کلید استان انتخابی
        /// </summary>
        public int Province_Id { get; set; }
        #endregion

        #region ForeignKey
        /// <summary>
        /// کلید خارجی به جدول استان‌ها
        /// </summary>
        [ForeignKey("Province_Id")]
        public virtual Province Province { get; set; }
        #endregion
    }
}

 جهت ایجاد دیتابیس لازم است کلاس کانتکست که از DbContext ارث بری نموده ایجاد شود:

using System.Collections.Generic;
using System.Data.Entity;

namespace Multi_Models_With_Stimulsoft_In_ASP.NetMVC.Models
{
    /// <summary>
    ///
    /// </summary>
    public class DBContext : DbContext
    {
        /// <summary>
        /// سازنده پیش فرض
        /// </summary>
        public DBContext()
            : base("DefaultConnection")
        {
        }
        /// <summary>
        /// استانها
        /// </summary>
        public DbSet<Province> Provinces { get; set; }
        /// <summary>
        /// شهرستانها
        /// </summary>
        public DbSet<City> Citys { get; set; }
    }
}

کانکشن استرینگ رو به فایل web.config اضافه کنید:

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=Stimulsoft;Integrated Security=True; providerName="System.Data.SqlClient" />
  </connectionStrings>

حال برای اینکه دیتابیس ایجاد شود لازم است یک بار درخواست برای سرور ارسال شود. برای تست از کد زیر استفاده شده:

if (!db.Database.Exists())
db.Provinces.ToList();

تا این بخش موفق شدیم جدول‌های استان‌ها و شهرستان‌ها را ایجاد نمایم،  اکنون لازم است به صورت دستی اطلاعاتی در دیتابیس ثبت شود:

نمایی از جدول استانها و شهرستانها

 

در تصویر بالا اطلاعات مربوط به جدول استان‌ها و شهرستان‌ها در دیتابیس وارد شده است(ارتباط یک به چند بین جدول استان و شهرستان).

ارسال Business Objects به استیمول سافت:

همانند مقالات قبل اکشن متد Print را پیاده سازی کنید:

/// <summary>
///
/// </summary>
/// <returns></returns>
public virtual ActionResult Print()
{
    return View();
}

کدهای HTML:

@using Stimulsoft.Report.Mvc;
@{Layout = null;}
<html>
<head>
    <title>عنوان</title>
</head>
<body>
    @Html.Stimulsoft().StiMvcViewer(new StiMvcViewerOptions()
{
    Theme = StiTheme.Office2013,
    ActionGetReportSnapshot = "StiReport",
    ActionViewerEvent = "ViewerEvent",
})
</body>
</html>

پیاده سازی متد StiReport:

/// <summary>
///
/// </summary>
/// <returns></returns>
public virtual ActionResult StiReport()
{
// ایجاد شی جدید
    using (var db = new Models.DBContext())
    {
// مدل ارسالی را با استفاده از متد
// Select
// انتخاب و در یک شی جدید قرار دهید
         var obj = db.Provinces.Select(z => new {ProvinceName = z.Name, Citys= z.Citys}).ToList();
         var mainReport = new StiReport();
         mainReport.Load(Server.MapPath("~/Files/Report.mrt"));
         mainReport.Compile();
// در صورتی لازم باشد دو مدل جدا ارسال شود کافیست دستور زیر را مجدد تایپ کنید
// توجه شود پارامتر اول میبایست با
// Business Object
// تعریفی در فایل استیمول سافت برابر باشد
// برای مثال:
// mainReport.RegBusinessObject("ProvincesWithCitys2", obj2);
        mainReport.RegBusinessObject("ProvincesWithCitys", obj);
      return Stimulsoft.Report.Mvc.StiMvcViewer.GetReportSnapshotResult(HttpContext, mainReport);
    }
}

 

ایجاد فایل استیمول سافت جهت گزارش:

در ریشه پروژه، پوشه‌ای با نام Files بسازید. نرم افزار استیمول‌سافت را اجرا و یک گزارش جدید ایجاد کرده و مسیر ذخیره سازی پوشه Files خواهد بود.

 ایجاد چند business objects

 مطابق تصویر بالا Business Objectهای ProvinceWithCitys و Citys را ایجاد کنید. جهت ایجاد Business Object بخش Citys کافیست همان روال ایجاد رو بر روی ProvincesWithCitys اجرا کنید.

اکنون می‌بایست یک GroupHeaderBand بر روی صفحه کشیده و رها کنید(Drag&Drop)، دیالوگ زیر نمایان میگردد:

ایجاد یک GroupHeaderBand

 

 در این گام لازم است فیلد Id مربوط به مدل والد(ProvinceWithCity) انتخاب و دکمه ok  کلیک شود. اکنون فیلد ProvinceName را بر روی GroupHeaderBand کشیده و رها کنید:

stimulsoft-add field to groupheaderband

 

 Business Objects بخش Citys را بر روی فرم کشیده و رها کنید.

stimulsoft-add business objects  to page

 

 تغییرات گرافیکی بر عهده خودتان. کار تمام است کافیست پروژه را اجرا کنید.

 خروجی:

 پروژه را اجرا و اکشن متد Print رو فراخوانی کرده تا گزارش نمایش داده شود(خروجی زیر حاصل دستخوش تغییرات بوده است).

stimulsoft-print groupheaderband with data

 

امید نصری

1 نظر:

تعداد دیدگاه‌های کاربران : 1 دیدگاه
مهمان گرامی! برای ارسال نظر نیاز است وارد سایت شوید.

omid3d

سلام ممنون از مقاله ی خوبتون در مورد stimulsoft فرض کنید موجودیت province یک فیلد به نام Country داشته باشه که از جنس رشته باشه. اونوقت ما اگر بخواهیم گزارش provinec هایی را داشته باشیم که دارای Country خاصی باشند (مثلا ایران)، چطوری باید رشته ی معادل Country را به اکشن StiReport پاس بدیم تا بر اون اساس دیتا را فیلتر کنیم؟ با تشکر

پاسخ دهید
0


You must log on to comment.