代码之家  ›  专栏  ›  技术社区  ›  Sascha

ASP.NET事件处理

  •  0
  • Sascha  · 技术社区  · 16 年前

    (1) 在OnInit中调用EnsureChildControl

    (2) 在CreateChildControls中创建动态表:

    Table aTable = new Table();
    aTable.ID = this.ID + "$" + T;
    TableRow aRow = new TableRow();
    aRow.ID = aTable.ID + "$R" + <COUNTER>.ToString();
    TableCell aCell = new TableCell();
    
    createLinkButton(row, col, caption, aCell, aRow.ID);
    
    this.Controls.Add(aTable);
    

    void aLinkButton_Command(object sender, CommandEventArgs e)
    {
        // Some stuff
        return;
    }
    

    (4) 具有如下功能:

    void createLinkButton(int row, int col, string caption, TableCell aCell, string baseID) {
        LinkButton lb = new LinkButton();
        lb.ID = baseID + "$" + row.ToString() + col.ToString();
        lb.Command += new CommandEventHandler(aLinkButton_Command);
        lb.Text = caption;
        lb.CommandName = "<command>";
        aCell.Controls.Add(lb);
        return;
    }
    

    再也没有想法了:(

    有什么想法吗

    4 回复  |  直到 16 年前
        1
  •  1
  •   Cerebrus    16 年前

    您需要在回发上重新创建动态创建的LinkButton,以便触发关联的EventHander。与其解释整件事,我强烈建议你读斯科特·米切尔的书 classic article 关于这个问题。

        2
  •  0
  •   Paul Nearney    16 年前

    是否将表添加到服务器控件。控件集合,例如。

    this.Controls.Add(aTable);
    

        3
  •  0
  •   Canavar    16 年前

    我认为实施 IPostBackEventHandler interface

    在本例中,您可以实现接口,在RisePostBackEvent中,您可以调用事件处理程序方法。

    希望这有帮助!

        4
  •  0
  •   William Gross    16 年前

    和回发请求 . 所有事件都在回发请求上处理,如果生成事件的控件在回发期间不存在,则事件处理程序将永远不会启动。