Hello Everybody
I'm using NeedDataSource event to populate grid with data. That's what grid tag looks like:
| <telerik:RadGrid runat="server" ID="gridUsers" AutoGenerateColumns="false" |
| AllowPaging="true" AllowCustomPaging="true" |
| onneeddatasource="gridUsers_NeedDataSource" ShowStatusBar="true" |
| PageSize="25" onpageindexchanged="gridUsers_PageIndexChanged" |
| ondatabound="gridUsers_DataBound"> |
| <MasterTableView AllowFilteringByColumn="true"> |
| <PagerStyle Mode="Slider" /> |
| <Columns> |
| <telerik:GridTemplateColumn CurrentFilterFunction="StartsWith" ShowFilterIcon="false" AutoPostBackOnFilter="true" HeaderText="Username" SortExpression="Username"> |
| <ItemTemplate> |
| <a href="<%#UrlHelpers.GetUserProfileUrl(Eval("UserID")) %>"> |
| <%#Eval("Username") %> |
| </a> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| <telerik:GridBoundColumn AllowFiltering="false" HeaderText="First name" DataField="FirstName"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn AllowFiltering="false" HeaderText="Last name" DataField="LastName"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </MasterTableView> |
| </telerik:RadGrid> |
That's a NeedDataSource event handler which I use:
| protected void gridUsers_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) |
| { |
| using (DataClassesDataContext db = new DataClassesDataContext()) |
| { |
| var query = from c in db.Users |
| select |
| new |
| { |
| c.FirstName, |
| c.LastName, |
| c.Username, |
| c.UserID |
| }; |
| gridUsers.MasterTableView.VirtualItemCount = query.Count(); |
| gridUsers.DataSource = query.Skip(gridUsers.CurrentPageIndex*gridUsers.PageSize).Take(gridUsers.PageSize).ToList(); |
| } |
| } |
I feel confused, because nearly all live demos that illustrate filtering stuff use SqlDataSource for data binding, not NeedDataSource handling. Every time I try to filter the grid by username I get an error which says "Expression expected". Could anybody give me a tip that would help me to solve the issue without changing the way data binding is done?
Thanks in advance!