این جور مشکلات زمانی پیدا میشه که خروجی ایجاد شده توسط کامپوننت ها به راحتی قابل تشخیص نیست. راز رفع مشکل فوق فراخوانی تابع .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();
}