How To Set A RadGrid's Page Size Programmatically Without Triggering A PageSizeChanged Event

asp.net, c#, telerik, webforms

Solution

try this-

protected void RadGrid1_PageSizeChanged(object source, GridPageSizeChangedEventArgs e) 
    {                
       RadGrid1.PageSizeChanged-=new GridPageSizeChangedEventHandler(RadGrid1_PageSizeChanged);
       RadGrid1.PageSize =  e.NewPageSize;

      RadGrid1.PageSizeChanged += new GridPageSizeChangedEventHandler(RadGrid1_PageSizeChanged);

      RebindGrid();
    }

Problem

I'm using a Telerik RadGrid with custom paging. My problem is that when I set the page size manually, the PageSizeChanged event gets fired and throws my code into an infinite loop. As a hack, I created a boolean that is set when the PageSizeChanged event gets fired. How do I set the page size on a RadGrid control without triggering the PageSizeChanged event? ``` private bool PageSizeChanged { get { return Convert.ToBoolean(ViewState["PageSizeChanged"]); } set { ViewState["PageSizeChanged"] = value; } } protected void RadGrid1_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e) { if (!PageSizeChanged) { PageSizeChanged = true; RadGrid1.PageSize = e.NewPageSize; } PageSizeChanged = false; RadGrid1.Rebind(); } ``` UPDATE: I have a solution that I like now. I ended up removing the event handler from the invocation list, setting the page size and then adding the event back to the invocation list. ``` protected void RadGrid1_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e) { RadGrid1.PageSizeChanged -= RadGrid1_PageSizeChanged; RadGrid1.PageIndex = 0; RadGrid1.PageSize = e.NewPageSize; RadGrid1.Rebind(); RadGrid1.PageSizeChanged += RadGrid1_PageSizeChanged; } ```

Original source