如何以编程方式设置 RadGrid 的页面大小,而不触发 PageSizeChanged 事件

本文关键字:事件 PageSizeChanged 编程 方式 设置 RadGrid | 更新日期: 2023-09-27 18:34:56

我正在使用带有自定义分页功能的Telerik RadGrid。我的问题是,当我手动设置页面大小时,PageSizeChanged 事件被触发并将我的代码抛入无限循环。作为一个黑客,我创建了一个布尔值,该布尔值是在触发PageSizeChanged事件时设置的。如何在不触发 PageSizeChanged 事件的情况下设置 RadGrid 控件上的页面大小?

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();
}

更新:我现在有一个我喜欢的解决方案。我最终从调用列表中删除了事件处理程序,设置了页面大小,然后将事件添加回调用列表。

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;
}

如何以编程方式设置 RadGrid 的页面大小,而不触发 PageSizeChanged 事件

试试这个-

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();
    }

删除RadGrid1_PageSizeChanged,并将页面大小确定为 -

RadGrid1.MasterTableView.PageSize = CustomerPageSize;