我有一个具有搜索功能的自定义控件。当用户点击搜索时,代码会根据搜索结果生成一个按钮列表。
每个按钮的 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) });
}