为什么我的按钮点击事件处理程序没有被调用

本文关键字:调用 程序 事件处理 我的 按钮 为什么 | 更新日期: 2023-09-27 18:06:06

我在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上。当它被单击时,post back发生(并且RadGrid再次在Page_PreInit上重新生成),但是,ExportToPdfButtonClick方法永远不会被调用。

为什么不调用?如何解决这个问题?它可能与视图状态和控件状态有关?

谢谢

为什么我的按钮点击事件处理程序没有被调用

尝试在page_init或page_load上绑定此事件

ASP。Net:为什么我的按钮's点击/命令事件不绑定/在中继器发射?

http://forums.asp.net/t/1129248.aspx/1/10

RadGrid似乎有明显的不同,并没有弄清楚为什么事件没有引发,但找到了解决方案。

我创建了一个实现ITemplate接口的新类,并将它分配给我的RadGrid的commandemtemplate属性。MasterTableView对象。

然后在我的新类的Instantiate()方法中添加我的自定义控件,最后引发click事件;基本上是重建我的命令行:

http://www.telerik.com/help/aspnet-ajax/grid-commanditemtemplate.html

不确定在什么时候这些控件被添加到RadGrid,但是必须在RadGrid_ItemCreated和RadGrid_Load事件之前和RadGrid_Init事件之后。总之,现在问题解决了