私はpage_initで動的に作成され、ページのupdatePanelの内側にあるプレースホルダに追加されたRadGridコントロールを持っています。部分的なポストバックは、完全なポストの「戻る」ボタンが部分的なポストバックとして機能するのをなぜですか?
RadGridのCommandItemセクションに新しいButtonを追加する必要があります。ボタンは完全なポストバックをサポートする必要があります。
RadGrid)がRadGrid_ItemCreated(と呼ばれるイベントがあり、それは私が私の新しいボタンを追加しましたところだし、それは私のRadGridに表示されます:
protected virtual void RdGridItemCreated(object sender, GridItemEventArgs e)
{
var itemType = e.Item.ItemType;
switch (itemType)
{
// other cases...
case GridItemType.CommandItem:
{
var gridCommandItem = e.Item as GridCommandItem;
if (gridCommandItem == null) return;
if (this.EnablePdfExport)
{
var pdfButton = CreateExportToPdfButton();
PageUtil.RegisterPostBackControl(pdfButton);
// this is the cell which contains the export buttons.
((Table)gridCommandItem.Cells[0].Controls[0]).Rows[0].Cells[1].Controls.Add(pdfButton);
}
break;
}
}
}
ボタンをクリックしてイベントを持ち、メソッドが追加されましたイベントハンドラとして:
private Button CreateExportToPdfButton()
{
var result = new Button();
result.ID = "btnExportToPdf";
result.Click += ExportToPdfButtonClick;
result.CssClass = "rgExpPDF";
result.CommandName = "ExportToPdf";
result.Attributes.Add("title", "Export to Pdf");
return result;
}
は私がのScriptManagerのRegisterPostBackControl()メソッドを使用しましたこのコントロールのポストバックイベントを登録するには。
私はRadGrid上のボタンをクリックすると、サーバーへのポストバックpublic static void RegisterPostBackControl(Control control)
{
var currentPage = (Page) HttpContext.Current.CurrentHandler;
var currentScriptManager = ScriptManager.GetCurrent(currentPage);
if (currentScriptManager != null)
{
currentScriptManager.RegisterPostBackControl(control);
}
}
が、問題はそのClickイベントが発生されることはありませんということです。
private void ExportToPdfButtonClick(object sender, EventArgs e)
{
// process
}
私は理由を理解していません。任意の考え/助け?
ボタンのIDを設定しないと、クリックイベントが発生しますが、その場合は新しい問題が発生します。 Radgridを更新するために外部ドロップダウンリストによってページ上で部分的なポストバックが発生すると、私のカスタムエクスポートボタンがポストバックを非同期的に送信しますが、ポストバックは完全にポストバックする必要があります。
多くのおかげで、