カスタムページングで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;
}