У меня есть элемент управления RadGrid, который динамически создается на page_init и добавляется в заполнитель, который находится внутри updatePanel на странице.
Мне нужно добавить новую кнопку в раздел CommandItem в RadGrid. Кнопка должна поддерживать полную обратную передачу.
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;
}
}
}
У кнопки есть событие Click, и к ней был добавлен метод в качестве обработчика события:
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;
}
Чтобы зарегистрировать событие обратной передачи для этого элемента управления, я использовал метод RegisterPostBackControl () ScriptManager.
public static void RegisterPostBackControl(Control control)
{
var currentPage = (Page) HttpContext.Current.CurrentHandler;
var currentScriptManager = ScriptManager.GetCurrent(currentPage);
if (currentScriptManager != null)
{
currentScriptManager.RegisterPostBackControl(control);
}
}
Когда я нажимаю кнопку на RadGrid, он отправляет обратно на сервер, но проблема в том, что его событие Click никогда не возникает:
private void ExportToPdfButtonClick(object sender, EventArgs e)
{
// process
}
Я не понимаю почему; какие мысли / помощь?
Если я не устанавливаю идентификатор для кнопки, возникает событие щелчка, но в этом случае возникает новая проблема. Когда на странице происходит частичная обратная передача с помощью внешнего раскрывающегося списка для обновления radgrid, моя настраиваемая кнопка экспорта отправляет обратные передачи асинхронно, тогда как она должна отправлять обратно полностью.
Большое спасибо,