繁体   English   中英

如何使用模态对话框弹出窗口和自定义控件处理来自动态生成的按钮的事件?

[英]How do I handle an event from a dynamically generated button using a modal dialog popup and custom control?

我有一个具有搜索功能的自定义控件。 当用户单击搜索时,代码将基于搜索结果生成按钮列表。

每个按钮的CommandArgument属性包含搜索结果的ID。 当用户单击按钮时,我要处理事件,获取CommandArgument并使用该值将事件引发回主页。

问题在于按钮没有引发事件。 我认为这是因为它在回发或其他任何操作上都会丢失。 我是否应该考虑使用其他列出值的方法来完成这项工作?

解决这个问题的最简单方法是什么? 这是我所拥有的:

private void Search()
{
        foreach (var c in companies)
        {
            TableRow companyRow = new TableRow();
            TableCell nameRowCell = new TableCell();
            TableCell regRowCell = new TableCell();

            Button selectButton = new Button();
            selectButton.CommandArgument = c.Id.ToString();
            selectButton.Text = c.Name;
            selectButton.Click += new EventHandler(selectButton_Click);
            selectButton.CausesValidation = false;

            nameRowCell.Controls.Add(selectButton);
            companyRow.Cells.Add(nameRowCell);
            tblCompanies.Rows.Add(companyRow);

        }
}

    void selectButton_Click(object sender, EventArgs e) // <- Not getting handled
    {
        Button btn = (Button)sender;
        string id = btn.CommandArgument;
        if (id != "" && CompanyFound != null)
            CompanyFound(new Company() { Id = int.Parse(id) });
    }

我一直在处理您的代码,它的确在屏幕上放置了一个按钮。 浏览器源代码以输入类型Submit Tag的形式显示按钮。 要测试它实际上是在触发,请在您的页面某处添加一个div,也许将其ID设置为testDiv。 然后,在您的selectButton_Click事件处理程序中,添加一行到以下效果:testDiv.innerHtml =“在此处制造”。

如果div更改,则触发您的按钮。

另外,可以在selectButton_Click的空白之前添加受保护的,公共的或其他内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM