У меня есть элемент управления 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, тогда моя пользовательская кнопка экспорта отправляет обратные передачи асинхронно, тогда как она должна отправлять обратно полностью.
Большое спасибо,