2

カスタムページングでTelerikRadGridを使用しています。私の問題は、ページサイズを手動で設定すると、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;
}
4

2 に答える 2

7

これを試して-

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();
    }
于 2012-05-23T07:09:55.433 に答える
2

RadGrid1_PageSizeChangedを削除し、ページサイズを-として割り当てます

RadGrid1.MasterTableView.PageSize = CustomerPageSize;
于 2012-05-21T21:03:20.700 に答える