I am trying to Implement Sorting & Filtering properties on Gird . I am able to do Sorting but not Filtering.
For this I wrote the code as follows
.aspx:-
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<!-- content start -->
<telerik:RadAjaxManager ID="RadAjaxManager2" DefaultLoadingPanelID="RadAjaxLoadingPanel1"
runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Height="75px"
Width="75px" Transparency="5">
<img style="margin-top: 150px;" alt="Loading..." src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading4.gif") %>' />
</telerik:RadAjaxLoadingPanel>
<telerik:RadGrid ID="RadGrid1" ShowGroupPanel="True" AllowFilteringByColumn="True"
Skin="Mac" runat="server" AllowPaging="True" AllowCustomPaging="True" PageSize="5"
VirtualItemCount="100" ForeColor="White" OnGroupsChanging="RadGrid1_GroupsChanging"
OnNeedDataSource="RadGrid1_NeedDataSource" AllowSorting="True" GridLines="None">
<%--<MasterTableView VirtualItemCount="25" />--%>
<FooterStyle ForeColor="#FF3300" />
<PagerStyle Mode="Slider"></PagerStyle>
</telerik:RadGrid>
</div>
Aspx.cs:-
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("server=.;database=Pubs;trusted_connection=true");
SqlDataAdapter dap = new SqlDataAdapter("select * from authors", con);
DataSet ds = new DataSet();
dap.Fill(ds, "authors");
this.RadGrid1.DataSource = ds.Tables[0];
this.RadGrid1.DataBind();
}
protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
MyBusinessObjectCollection MyBusinessObjectCollection1 = new MyBusinessObjectCollection();
int startRowIndex = (ShouldApplySortFilterOrGroup()) ? 0 : RadGrid1.CurrentPageIndex * RadGrid1.PageSize;
int maximumRows = (ShouldApplySortFilterOrGroup()) ?
MyBusinessObjectCollection1.SelectCount() : RadGrid1.PageSize;
RadGrid1.AllowCustomPaging = !ShouldApplySortFilterOrGroup();
RadGrid1.DataSource = MyBusinessObjectCollection1.Select(startRowIndex, maximumRows);
}
bool isGrouping = false;
public bool ShouldApplySortFilterOrGroup()
{
return RadGrid1.MasterTableView.FilterExpression != "" ||
(RadGrid1.MasterTableView.GroupByExpressions.Count > 0 || isGrouping) ||
RadGrid1.MasterTableView.SortExpressions.Count > 0;
}
protected void RadGrid1_GroupsChanging(object source, GridGroupsChangingEventArgs e)
{
isGrouping = true;
if (e.Action == GridGroupsChangingAction.Ungroup && RadGrid1.CurrentPageIndex > 0)
{
isGrouping = false;
}
}
In above manner I tried,but no use.
Any one can guide me with simple steps to implement Filtering operations
Thanks,
SRRAO.
12 Answers, 1 is accepted
When using NeedDataSource or DataSourceID the grid will handle all automatic operations like paging, filtering, sorting, etc. - you do not need any other code.
You can take for example this dome:
http://www.telerik.com/DEMOS/ASPNET/Prometheus/Grid/Examples/Programming/NeedDataSource/DefaultCS.aspx
and set AllowFilteringByColumn="true".
Sincerely yours,
Vlad
the Telerik team
Instantly find answers to your questions at the new Telerik Support Center
Hi,
Thanks a lot for your co-operation. But I want to go through with Slider Mode only(<PagerStyle Mode="Slider">)
Please Guide me…!
Thanks,
Ranganath.S
I'm not sure how this is related to the grid filtering - can you clarify?
Regards,
Vlad
the Telerik team
Instantly find answers to your questions at the new Telerik Support Center
You should never call the DataBind() method from inside the NeedDataSource handler or mix simple data-binding mode with advanced data-binding.
Thanks
Princy.
I use the advanced databinding, but filtering doesn't work. Please help me!
I tested the demo my colleague Vlad linked in his first reply (enabling the filtering feature of the control) and everything worked as expected on my machine. Can you please test that at your end? Any further details regarding your grid configuration settings can help us determine the cause of the issue to address it accordingly.
Regards,
Stephen
the Telerik team
Instantly find answers to your questions at the new Telerik Support Center
<telerik:RadGrid ID="Grid" EnableViewState="true" runat="server" AllowSorting="True" GridLines="None" Skin="Vista" |
AllowFilteringByColumn="True" PageSize="30" Pdf-PageHeight="8,5in" |
Pdf-PageWidth="11in" AutoGenerateColumns="False" EnableLinqExpressions="False"> |
<ExportSettings IgnorePaging="True" OpenInNewWindow="True" ExportOnlyData="True" |
FileName="ExportData"> |
<Pdf FontType="Subset" PaperSize="A4" PageWidth="400mm" PageHeight="" /> |
<Excel Format="Html" /> |
<Csv ColumnDelimiter="Comma" RowDelimiter="NewLine" /> |
</ExportSettings> |
<MasterTableView CommandItemDisplay="None" CurrentResetPageIndexAction="SetPageIndexToFirst" |
Dir="LTR" Frame="Border" PageSize="20" TableLayout="Auto" |
AllowPaging="True"> |
<RowIndicatorColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" |
Visible="False"> |
<HeaderStyle Width="20px" /> |
</RowIndicatorColumn> |
<ExpandCollapseColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType" |
Resizable="False" Visible="False"> |
<HeaderStyle Width="20px" /> |
</ExpandCollapseColumn> |
<EditFormSettings> |
<EditColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType"> |
</EditColumn> |
</EditFormSettings> |
</MasterTableView> |
<ClientSettings AllowColumnsReorder="True" ReorderColumnsOnClient="True" AllowColumnHide="True" |
EnableRowHoverStyle="True"> |
<Selecting AllowRowSelect="True" EnableDragToSelectRows="False" /> |
</ClientSettings> |
</telerik:RadGrid> |
I do not see any binding logic in your post. Can you paste the code-behind of the page to see how you bind the grid instance?
Regards,
Stephen
the Telerik team
Instantly find answers to your questions at the new Telerik Support Center
protected void Page_Load(object sender, EventArgs e) |
{ |
if (!IsPostBack) |
{ |
Grid.MasterTableView.AllowPaging = true; |
Grid.PagerStyle.Mode = Telerik.Web.UI.GridPagerMode.NextPrevAndNumeric; |
Grid.AllowMultiRowSelection = true; |
Grid.AllowFilteringByColumn = true; |
Grid.GridLines = GridLines.Both; |
Grid.ExportSettings.ExportOnlyData = true; |
Grid.ExportSettings.OpenInNewWindow = true; |
Grid.MasterTableView.AllowFilteringByColumn = true; |
Grid.MasterTableView.Width = new Unit(800, UnitType.Pixel); |
Grid.ShowStatusBar = true; |
createGridColumns(); |
} |
Grid.PreRender += new EventHandler(Grid_PreRender); |
Grid.NeedDataSource += new Telerik.Web.UI.GridNeedDataSourceEventHandler(Grid_NeedDataSource); |
Grid.ItemCommand += new Telerik.Web.UI.GridCommandEventHandler(Grid_ItemCommand); |
Grid.ItemDataBound += new Telerik.Web.UI.GridItemEventHandler(Grid_ItemDataBound); |
} |
void Grid_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) |
{ |
Grid.MasterTableView.DataSource = objectArray; |
} |
Your implementation seems correct. To progress in our investigation, can you prepare a small working version of your project and send it attached to a support ticket? I will test/debug it on my machine and will get around to you with more info on the matter.
Regards,
Stephen
the Telerik team
Instantly find answers to your questions at the new Telerik Support Center
When I use a dataset asa datasource, there is no problem with filtering.
But I have to use this object[] as datasource.
A small project is not so easy to make, because these objects I get from a webservice.
Grid.MasterTableView.Columns.FindByUniqueName("Selection").Visible = true; |
Grid.MasterTableView.Rebind(); |
When I delete these 2 lines, everything works