1

我正在使用WebForms.

当我向表中添加新行时,我正在向每个 TableRow 中的每个 TableCell 添加此类控件:

// in some method, which creates the table

TableRow row = new TableRow();

// here goes other cells with text data

TableCell cellActions = new TableCell();
cellActions.ID = "offerActionsOfferId" + enumerator.Current.offerId;

// init button View More for cell
LinkButton buttonViewExpanded = new LinkButton();
buttonViewExpanded.ID = "buttonViewExpandedOfferId" + enumerator.Current.offerId;
buttonViewExpanded.CssClass = "table-actions-button ic-table-edit";
buttonViewExpanded.Click += new EventHandler(buttonViewExpanded_Click);
buttonViewExpanded.ToolTip = "some alt...";
cellActions.Controls.Add(buttonViewExpanded);
/* end of Action Buttons */

...

row.Cells.Add(cellActions);
this.tableMarket.Controls.Add(row);

但是该方法有一个失败new EventHandler(buttonViewExpanded_Click)

表格在 ASPX 页面中呈现得非常好,并且所有控件都可见,但是当我尝试单击该 LinkBut​​ton 时发生故障。

当我标记了一个断点并尝试在调试器中捕获我的 ASP.NET 程序的执行以对程序工作进行一些分析时 - 页面仅刷新,并且单击事件处理程序中没有一个断点被捕获。

为什么会发生?以及如何让它发挥作用?

4

1 回答 1

1

我无法测试您的代码;它与其他类有关,例如InternalApi. 但是,这是我发现的。

您需要弄清楚在页面 init中加载SetTableBodyForSceneMarket的方法。

它基本上在回发时重新加载动态创建的控件;否则,这些控件将为空,并且不能触发事件。

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    if(IsPostBack)
    {
        SetTableBodyForSceneMarket();
    }
}

private void SetTableBodyForSceneMarket()
{
  ...
}
于 2013-05-20T16:10:51.890 回答