راهنمایی در مورد ایجاد columnها
اهمیت: خیلی مهم نوع: درخواست راهنمایی شماره نگارش: 1
با سلام خدمت آقای نصیری
من برای ایجاد column‌های گزارش خودم از کد زیر استفاده کردم

 .MainTableDataSource(dataSource =>
            {
                var ctx = new clearanceEntities();
                var list = (from c in ctx.CLEARANCE_COST
                            join r in ctx.CLEARANCE_REQUEST on
                                c.REQUEST_ID equals r.REQUEST_ID
                            where c.REQUEST_ID == 3
                            select new
                            {
                                CostName = c.COST_TYPES.COST_NAME,
                                CostAmount = c.COST_AMOUNT,
                               

                            }).ToList();

                dataSource.StronglyTypedList(list);
            })
            
            .MainTableColumns(columns =>
            {
                columns.AddColumn(column =>
                {
                    column.PropertyName("rowNo");
                    column.IsRowNumber(true);
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.IsVisible(true);
                    column.Order(0);
                    column.Width(1);
                    column.HeaderCell("#");
                });

                

                columns.AddColumn(column =>
                {
                    column.PropertyName<CLEARANCE_COST>(x =>x.COST_TYPES.COST_NAME);
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.IsVisible(true);
                    column.Order(1);
                    column.Width(3);
                    column.HeaderCell("توضیحات");
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName<CLEARANCE_COST>(x=>x.REMARK);
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.IsVisible(true);
                    column.Order(2);
                    column.Width(3);
                    column.HeaderCell("شماره فیش بانکی/سند");
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName<CLEARANCE_COST>(x => x.COST_AMOUNT);
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.IsVisible(true);
                    column.Order(3);
                    column.Width(2);
                    column.HeaderCell("مبلغ");
                   
                });

            })
            .MainTableEvents(events =>
            {
                events.DataSourceIsEmpty(message: "There is no data available to display.");
            })
ولی وقتی که اجرا می‌کردم اول پیغام There is no data available to display رو نشون می‌داد ولی حال پیغام می‌دهد که Column ی به عنوان COST_TYPES.COST_NAME وجود ندارد. من حدس می‌زنم در تعریف خودم یه اشکالی وجود دارد ممنون میشم راهنمایی کنید.
  • #
    ‫۱۱ سال و ۱۱ ماه قبل، دوشنبه ۲۹ آبان ۱۳۹۱، ساعت ۲۰:۴۷
    نتیجه کوئری LINQ شما چون نهایتا به select new بدون ذکر نام کلاس خاصی منتهی شده یعنی از نوع Anonymous است و نه strongly typed. اگر پس از select new، نام کلاس خاصی را برای projection نهایی ذکر می‌کردید، نتیجه نهایی می‌شد strongly typed.
    بنابراین بهتر است از منبع داده dataSource.AnonymousTypeList استفاده کنید.
    همچنین در این حالت ستون‌های گزارش شما بر اساس select آخر و projection آخر است که تعیین می‌شوند (که در مثال شما فقط دو خاصیت است و نه بیشتر). به عبارتی در حالت AnonymousTypeList فوق خواهیم داشت:
    column.PropertyName("CostName");
    //...
    column.PropertyName("CostAmount");

    • #
      ‫۱۱ سال و ۱۱ ماه قبل، دوشنبه ۲۹ آبان ۱۳۹۱، ساعت ۲۰:۵۳
      یعنی دیگه لازم نیست که تعریف Column‌ها را به این صورت انجام بدیم؟
       columns.AddColumn(column =>
                      {
                          column.PropertyName<CLEARANCE_COST>(x =>x.COST_TYPES.COST_NAME);
                          column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                          column.IsVisible(true);
                          column.Order(1);
                          column.Width(3);
                          column.HeaderCell("توضیحات");
                      });

      • #
        ‫۱۱ سال و ۱۱ ماه قبل، دوشنبه ۲۹ آبان ۱۳۹۱، ساعت ۲۰:۵۷
        در مورد مثال خاص شما، خیر. به select آخری که انجام دادید دقت کنید. این select است که خروجی نهایی را مشخص می‌کند.
        select new
               {
                   CostName = ...,
                   CostAmount = ...
               }
        مثل کوئری زیر
        select f1 as CostName, f2 as CostAmount  from table2
        مهم نیست table2 چند فیلد دارد. نتیجه این کوئری همیشه حاوی دو فیلد است.