سلام به همگی.
دوستان من با صفحه بندی گرید ویوی تلریک مشکل دارم و میدونم که مشکل از linqdatasource است که به گرید وصل شده. برای رفع مشکل باید چی کار کنم؟ اینم عکس خطایی که نشون میده
Untitled.jpg
سلام به همگی.
دوستان من با صفحه بندی گرید ویوی تلریک مشکل دارم و میدونم که مشکل از linqdatasource است که به گرید وصل شده. برای رفع مشکل باید چی کار کنم؟ اینم عکس خطایی که نشون میده
Untitled.jpg
خودش راه حل گفته دیگه وقتی از متد skip استفاده میکنی باید اطلاعات مرتب شده باشند برای این کار باید از order by استفاده کنی براساس یکی از فیلدها اطلاعات مرتب کنی...!
سلام و خسته نباشید
با عرض پوزش از آقای سامان هاشمی که استاد ما هستند
بنده به این مشکل خیلی قبلا ها خورده بودم که بعد از تحقیقات در سایت خود تلریک بدین شکل تونستم مشکل را حل کنم
(در ضمن این کد هم معادل جستجوی بین تاریخ در 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 صبح دلیل: توضیحات بیشتر...
خیلی ممنونم ازت. اما میشه بگی این کوئری چی کار میکنه؟
من در رویداد 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 و چیزهای دیگه ای که در ادامه کوئریت گرفتی و باید کجا بنویسم؟ اگه ممکنه یه توضیح کوچولو درباره کدت بهم بده.ممنون میشم
این جور مشکلات زمانی پیدا میشه که خروجی ایجاد شده توسط کامپوننت ها به راحتی قابل تشخیص نیست. راز رفع مشکل فوق فراخوانی تابع .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();
}
اگر کدت رو به این شکل تغییر بدی دیگه مشکلی وجود نخواهد داشت:
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();
}
سلام و با تشکر
خوب بنده از Entity Data Source استفاده میکنم و موارد را با ToList() فراخوانی و نتیجه را به RadGridDataSource میدهم ولی باز به صفحه بعدی میرم اطلاعات را در Grid نشون نمیدهراز رفع مشکل فوق فراخوانی تابع .ToList() قبل از تحویل نتیجه به DataSource است.
این مشکل کجاست ؟
با سلام و عرض ادب
با توجه به گفته شما :
بنده یک صفحه و یک RadGrid ایجاد کردم و یک LinqDataSource به صفحه اضافه و عملیات بالا رو دقیق اجرا کردم ولی با توجه به اینکه با عوض کردن صفحه RadGrid باز مشکل عدم نمایش اطلاعات وجود دارد بنده باید تنظیماتی دیگر انجام دهم ؟
در مورد Entity Data Source هم هر کاری میکنم باز مورد همان است
تنها در موردی که مشکل عدم نمایش اطلاعات با تعویض صفحه RadGrid فع میشود زمانی است که Entity Data Source رو مستقیما به دیتابیس وصل کنیم ( یعنی نمیتوان صفحه PostBack کرد و اطلاعات را در صفحه بعدی RadGrid مشاهده نمود!!!)
لطفا اگر امکان دارد مواردی که هست بصورت کامل ارائه دهید شاید نکته ای باشد که بنده رعایت نمیکنم
ممنون از راهنمایی های شما