با سلام ببینید من یه مدل به صورت زیر دارم
public partial class Person { public int Person_Id { get; set; } public string Person_Name { get; set; } public string Person_Family { get; set; } public string Person_ShomareShenasname { get; set; } }
در ویوو میخوام کاربر خودش بتوونه اون فیلدهایی که میخواد توو گزارش بیاد رو انتخاب کنه ، به خاطر همین یه کلاس دیگه ساخنم به صورت زیر
public class csPerson { [ScaffoldColumn(false)] [Bindable(false)] public int Person_Id { get; set; } [Display(Name = "نام ")] [DisplayName("نام ")] public string Person_Name { get; set; } [Display(Name = "نام خانوادگی ")] [DisplayName("نام خانوادگی ")] public string Person_Family { get; set; } [Display(Name = "شماره شناسنامه ")] [DisplayName("شماره شناسنامه ")] public string Person_ShomareShenasname { get; set; } public bool b_Person_Name { get; set; } public bool b_Person_Family { get; set; } public bool b_Person_ShomareShenasname { get; set; } }
الان ویووی من این شکلی هست یعنی کاربر فیلدها رو میبینه و انتخاب میکنه
وقتی دکمه ثبت رو میزنه از طریق فیلدهای boolean من میفهمم که چه فیلدهایی را طرف انتخاب کرده ، اکشنمو ببینید
[HttpGet] public ActionResult Index() { csPerson p = new csPerson(); return View(p); } [HttpPost] public ActionResult Index(csPerson p) { return View(); }
ایرادم الان اینه که من میخوام فقط اوون فیلدهایی که انتخاب شده رو به عنوان یک دیتا سورس بدم به Stimul report و این یه چیز کلی هست یغنی مثلا من میام نام و شماره شناسنامه رو انتخاب میکنم یه نفر دیگه میاد فقط نام خانوادگی رو انتخاب میکنه میخوام هر شخص بتوونه خودش اون ستون های گزارش را به صورت داینامیک انتخاب کنه
واقعا موندم چیکار کنم
لینک رو بلدم ، اما با لامبدا شرط بزارم فکرکنم نوع anynomuuse برمیگردونه من اینو نمیخوام، میشه منظورتونو به صورت کد بگید
برای اون قسمت بعد از انتخاب میتونید از ORM Dapper استفاده کنید
مثل Entity هست ولی اجازه میده کوئری Sql اجرا کنید و به راحتی ستون ها رو واکشی کنید
به صورت زیر عمل کنید:
public void TestReport() { // this is fack list of person var person = new List<Person>() { new Person() { Person_Family = "Alizadeh", Person_ShomareShenasname = "123", Person_Name = "Soheil", Person_Id = 1 }, new Person() { Person_Family = "Madaeni", Person_ShomareShenasname = "66", Person_Name = "Iman", Person_Id = 2 } }; var p = new csPerson() { b_Person_Family = true, b_Person_ShomareShenasname = true }; var report = person.Select(o => new Person() { Person_Family = p.b_Person_Family ? o.Person_Family : null, Person_Name = p.b_Person_Name ? o.Person_Name : null, Person_ShomareShenasname = p.b_Person_ShomareShenasname ? o.Person_ShomareShenasname : null, }).ToList(); }
دوست عزیز لطفا در نام گذاری دقت کنید:
9 Confusing Naming Conventions for Beginners
خب اقای علیزاده اینی هم که شما نوشتید یعنی report خب داخلش باز یه فیلد Person_Family و Person_Name و Person_Shomareshenasname هست دیگه منظورم اینه این فیلدها هست فقط تووش اومدی چک کردی که اگر کاربر انتخاب نکرده بود null بشه؟
سوال من الان اینه ، خب شما الان یه گزارش مثل stimul داری، میخوای این ستون ها رو داینامیک بدی بهش ، توو design استیمول میای تعریف میکین همه ستون ها رو ؟ یعنی Person_Name و Person_Familyو Person_shenasname و حالا ممکنه داخل اشون null باشه ، گیر اصلی من اینه که این ستون ها داینامیک باشه نمیدونم چه جور بگم.شما تنها کاری که کردی اومدی توو بعضی هایی که انتخاب نکرده null گذاشتی
مشکل شما با ایجاد Property های پویا حل می شود ؟
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)