【发布时间】:2011-08-18 16:01:49
【问题描述】:
我在 Page_PreInit 事件上动态创建了一个 RadGrid 控件,并将其添加到页面上的占位符中。我的 RadGridBuilder 类有一个 Build() 方法。
我的 RadGrid 有一个自定义按钮,该按钮是在构建 RadGrid (Page_PreInit) 期间调用的 ItemCreated 事件时添加的:
protected virtual void RdGridItemCreated(object sender, GridItemEventArgs e)
{
switch (e.Item.ItemType)
{
// other codes
case GridItemType.CommandItem:
{
var gridCommandItem = e.Item as GridCommandItem;
AddPdfButton(gridCommandItem);
break;
}
}
}
private void AddPdfButton(GridCommandItem gridCommandItem)
{
var pdfButton = CreateExportToPdfButton();
try
{
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);
}
catch
{
// LOG the error silently
}
}
}
private Button CreateExportToPdfButton()
{
var result = new Button();
result.ID = "btnExportToPdf";
result.Click += ExportToPdfButtonClick;
result.CssClass = "rgExpPDF";
result.CommandName = "ExportToPdfCustomCommand";
result.Attributes["title"] = "Export to Pdf";
return result;
}
private void ExportToPdfButtonClick(object sender, EventArgs e)
{
// custom code
}
Pdf 图标按预期显示在 RadGrid 上。单击它时,会发生回发(并且 RadGrid 显然会在 Page_PreInit 上重新生成),但是,永远不会调用 ExportToPdfButtonClick 方法。
为什么不调用它?如何解决?可能跟viewstate和control state有关?
谢谢
【问题讨论】:
标签: c# asp.net viewstate radgrid