نمایش نتایج 1 تا 11 از 11

نام تاپیک: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    تهران
    پست
    197

    مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    سلام به همگی.
    دوستان من با صفحه بندی گرید ویوی تلریک مشکل دارم و میدونم که مشکل از linqdatasource است که به گرید وصل شده. برای رفع مشکل باید چی کار کنم؟ اینم عکس خطایی که نشون میده

    Untitled.jpg

  2. #2

    نقل قول: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    خودش راه حل گفته دیگه وقتی از متد skip استفاده میکنی باید اطلاعات مرتب شده باشند برای این کار باید از order by استفاده کنی براساس یکی از فیلدها اطلاعات مرتب کنی...!

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    تهران
    پست
    197

    نقل قول: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    نقل قول نوشته شده توسط Saman Hashemi مشاهده تاپیک
    خودش راه حل گفته دیگه وقتی از متد skip استفاده میکنی باید اطلاعات مرتب شده باشند برای این کار باید از order by استفاده کنی براساس یکی از فیلدها اطلاعات مرتب کنی...!
    مشکل اینجاست که من اصلا همچین متدی رو استفاده نکردم. و هرچی گشتم نفهمیدم کجای برنامه از این متد استفاده شده

  4. #4
    کاربر دائمی آواتار sanay_esh
    تاریخ عضویت
    تیر 1386
    محل زندگی
    برنامه نویس !
    سن
    39
    پست
    449

    نقل قول: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    سلام و خسته نباشید
    با عرض پوزش از آقای سامان هاشمی که استاد ما هستند

    بنده به این مشکل خیلی قبلا ها خورده بودم که بعد از تحقیقات در سایت خود تلریک بدین شکل تونستم مشکل را حل کنم
    (در ضمن این کد هم معادل جستجوی بین تاریخ در sql است که بصورت Linq to Entity نوشته شده است )
    ابتدا :

       var sublist = from m in DataContext.MyTable
    where string.Compare(m.f1, txtfdate.Text)) > -1 && string.Compare(m.f1, txttodate.Text) < 1
    select m;
    ViewState["GridDS"] = sublist.ToList();
    RadGrid1.DataSource = ViewState["GridDS"];
    RadGrid1.DataBind();


    و در ادامه :
      protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
    if (IsPostBack)
    {
    RadGrid1.DataSource = ViewState["GridDS"];
    }
    }
    آخرین ویرایش به وسیله sanay_esh : سه شنبه 02 اسفند 1390 در 09:26 صبح دلیل: توضیحات بیشتر...

  5. #5
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    تهران
    پست
    197

    نقل قول: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    خیلی ممنونم ازت. اما میشه بگی این کوئری چی کار میکنه؟

    من در رویداد selecting لینک دیتا سورسم اینو نوشتم :

    protected void dsProducts_Selecting(object sender, LinqDataSourceSelectEventArgs e)
    {
    e.Result = from p in DataContext.context.Products
    join pg in DataContext.context.ProductGroups on p.ProductGroupID equals pg.ProductGroupID
    select new
    {
    p.ProductID,
    p.ProductTitle,
    pg.ProductGroupTitle,
    p.ProductPrice,
    p.ProductImageUrl
    };

    }



    viewstate و چیزهای دیگه ای که در ادامه کوئریت گرفتی و باید کجا بنویسم؟ اگه ممکنه یه توضیح کوچولو درباره کدت بهم بده.ممنون میشم

  6. #6
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    این جور مشکلات زمانی پیدا میشه که خروجی ایجاد شده توسط کامپوننت ها به راحتی قابل تشخیص نیست. راز رفع مشکل فوق فراخوانی تابع .ToList() قبل از تحویل نتیجه به DataSource است.

    کد زیر چند تا مشکل داره:
                           var sublist = from m in DataContext.MyTable
    where string.Compare(m.f1, txtfdate.Text)) > -1 && string.Compare(m.f1, txttodate.Text) < 1
    select m;
    ViewState["GridDS"] = sublist.ToList();
    RadGrid1.DataSource = ViewState["GridDS"];
    RadGrid1.DataBind();


    1- قرار دادن نتیجه Query در ViewState کار بسیار غلطی است، چون حجم ViewState رو به شدت افزایش میده و باعث کندی عملکرد صفحه میشه.
    2- این که هر بار مشخصه DataSource گرید رو از طریق Source مقدار دهی کنید باعث از کار افتادن Command های گرید و به هم خوردن یکپارچگی ViewState میشه، بنابراین بهتر است یک LinqDataSource بر روی صفحه بگذارید و در رویداد Selecting اش داده ها را تامین کنید. به این ترتیب گرید بدون مشکل هر وقت نیاز به دریافت داده ها داشته باشد از دیتاسورس داده ها را دریافت می کند و مشکلی هم پیش نمی آید:
            protected void LingDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
    {
    e.Result = (from m in DataContext.MyTable
    where string.Compare(m.f1, txtfdate.Text)) > -1 && string.Compare(m.f1, txttodate.Text) < 1
    select m).ToList();
    }

  7. #7
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    نقل قول نوشته شده توسط bahareh1368 مشاهده تاپیک
    خیلی ممنونم ازت. اما میشه بگی این کوئری چی کار میکنه؟

    من در رویداد selecting لینک دیتا سورسم اینو نوشتم :

    protected void dsProducts_Selecting(object sender, LinqDataSourceSelectEventArgs e)
    {
    e.Result = from p in DataContext.context.Products
    join pg in DataContext.context.ProductGroups on p.ProductGroupID equals pg.ProductGroupID
    select new
    {
    p.ProductID,
    p.ProductTitle,
    pg.ProductGroupTitle,
    p.ProductPrice,
    p.ProductImageUrl
    };

    }

    اگر کدت رو به این شکل تغییر بدی دیگه مشکلی وجود نخواهد داشت:

    protected void dsProducts_Selecting(object sender, LinqDataSourceSelectEventArgs e)
    {
    e.Result = (from p in DataContext.context.Products
    join pg in DataContext.context.ProductGroups on p.ProductGroupID equals pg.ProductGroupID
    select new
    {
    p.ProductID,
    p.ProductTitle,
    pg.ProductGroupTitle,
    p.ProductPrice,
    p.ProductImageUrl
    }).ToList();

    }


  8. #8
    کاربر دائمی آواتار sanay_esh
    تاریخ عضویت
    تیر 1386
    محل زندگی
    برنامه نویس !
    سن
    39
    پست
    449

    نقل قول: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    سلام و با تشکر
    راز رفع مشکل فوق فراخوانی تابع .ToList() قبل از تحویل نتیجه به DataSource است.
    خوب بنده از Entity Data Source استفاده میکنم و موارد را با ToList() فراخوانی و نتیجه را به RadGridDataSource میدهم ولی باز به صفحه بعدی میرم اطلاعات را در Grid نشون نمیده

    این مشکل کجاست ؟

  9. #9
    کاربر دائمی آواتار sanay_esh
    تاریخ عضویت
    تیر 1386
    محل زندگی
    برنامه نویس !
    سن
    39
    پست
    449

    نقل قول: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    با سلام و عرض ادب
    با توجه به گفته شما :

    نقل قول نوشته شده توسط DelphiAssistant مشاهده تاپیک
    این جور مشکلات زمانی پیدا میشه که خروجی ایجاد شده توسط کامپوننت ها به راحتی قابل تشخیص نیست. راز رفع مشکل فوق فراخوانی تابع .ToList() قبل از تحویل نتیجه به DataSource است.

    کد زیر چند تا مشکل داره:
                           var sublist = from m in DataContext.MyTable
    where string.Compare(m.f1, txtfdate.Text)) > -1 && string.Compare(m.f1, txttodate.Text) < 1
    select m;
    ViewState["GridDS"] = sublist.ToList();
    RadGrid1.DataSource = ViewState["GridDS"];
    RadGrid1.DataBind();


    1- قرار دادن نتیجه Query در ViewState کار بسیار غلطی است، چون حجم ViewState رو به شدت افزایش میده و باعث کندی عملکرد صفحه میشه.
    2- این که هر بار مشخصه DataSource گرید رو از طریق Source مقدار دهی کنید باعث از کار افتادن Command های گرید و به هم خوردن یکپارچگی ViewState میشه، بنابراین بهتر است یک LinqDataSource بر روی صفحه بگذارید و در رویداد Selecting اش داده ها را تامین کنید. به این ترتیب گرید بدون مشکل هر وقت نیاز به دریافت داده ها داشته باشد از دیتاسورس داده ها را دریافت می کند و مشکلی هم پیش نمی آید:
            protected void LingDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
    {
    e.Result = (from m in DataContext.MyTable
    where string.Compare(m.f1, txtfdate.Text)) > -1 && string.Compare(m.f1, txttodate.Text) < 1
    select m).ToList();
    }
    بنده یک صفحه و یک RadGrid ایجاد کردم و یک LinqDataSource به صفحه اضافه و عملیات بالا رو دقیق اجرا کردم ولی با توجه به اینکه با عوض کردن صفحه RadGrid باز مشکل عدم نمایش اطلاعات وجود دارد بنده باید تنظیماتی دیگر انجام دهم ؟

    در مورد Entity Data Source هم هر کاری میکنم باز مورد همان است

    تنها در موردی که مشکل عدم نمایش اطلاعات با تعویض صفحه RadGrid فع میشود زمانی است که Entity Data Source رو مستقیما به دیتابیس وصل کنیم ( یعنی نمیتوان صفحه PostBack کرد و اطلاعات را در صفحه بعدی RadGrid مشاهده نمود!!!)

    لطفا اگر امکان دارد مواردی که هست بصورت کامل ارائه دهید شاید نکته ای باشد که بنده رعایت نمیکنم

    ممنون از راهنمایی های شما

  10. #10
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    تهران
    پست
    197

    نقل قول: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    نقل قول نوشته شده توسط sanay_esh مشاهده تاپیک
    با سلام و عرض ادب
    با توجه به گفته شما :



    بنده یک صفحه و یک RadGrid ایجاد کردم و یک LinqDataSource به صفحه اضافه و عملیات بالا رو دقیق اجرا کردم ولی با توجه به اینکه با عوض کردن صفحه RadGrid باز مشکل عدم نمایش اطلاعات وجود دارد بنده باید تنظیماتی دیگر انجام دهم ؟

    در مورد Entity Data Source هم هر کاری میکنم باز مورد همان است

    تنها در موردی که مشکل عدم نمایش اطلاعات با تعویض صفحه RadGrid فع میشود زمانی است که Entity Data Source رو مستقیما به دیتابیس وصل کنیم ( یعنی نمیتوان صفحه PostBack کرد و اطلاعات را در صفحه بعدی RadGrid مشاهده نمود!!!)

    لطفا اگر امکان دارد مواردی که هست بصورت کامل ارائه دهید شاید نکته ای باشد که بنده رعایت نمیکنم

    ممنون از راهنمایی های شما
    من با entity framework هم کار کردم.مشکلی نداشت. من یه entity datasource میذارم و گرید رو مستقیم بهش وصل می کنم.اینطوری هیچ مشکلی نداره در همه موارد هم درست کار میکنه

  11. #11
    کاربر دائمی آواتار sanay_esh
    تاریخ عضویت
    تیر 1386
    محل زندگی
    برنامه نویس !
    سن
    39
    پست
    449

    نقل قول: مشکل با paging گریدویو تلکریک وقتی دیتا سورس از نوع linq datasource است

    نقل قول نوشته شده توسط bahareh1368 مشاهده تاپیک
    من با entity framework هم کار کردم.مشکلی نداشت. من یه entity datasource میذارم و گرید رو مستقیم بهش وصل می کنم.اینطوری هیچ مشکلی نداره در همه موارد هم درست کار میکنه
    بله شما درست میفرمائید ولی اگر شما این entity framework را با کد بیارید بالا یعنی در داخل کد تعریف کنید و اگر یک جستجو هم داشته باشید به این مشکل برخواهید خورد!!!

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •