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

嵌套UserControls中的LinkButton未触发命令事件

  •  1
  • Wookai  · 技术社区  · 17 年前

    UserControl (此控件由另一个控件加载 用户控件 它是由一个aspx页面(在母版页中)动态加载的,我想在其中使用 LinkButton OnCommand 事件。

    OnLoad 面板的事件(需要在生命周期中激发事件之前创建):

    protected void PatentAssignee_Load(object sender, EventArgs e) {
        Label label = (Label)sender;
    
        LinkButton link = new LinkButton();
        link.Text = name;
        link.Command += Link_OnCommand;
        link.CommandArgument = "argument";
        link.ID = "someID";
    
        label.Controls.Add(link)
    }
    
    protected void Link_OnCommand(object sender, CommandEventArgs e) {
        Response.Write(e.CommandArgument);
    }
    

    ScriptManager s = (ScriptManager)this.Page.Master.FindControl("__scriptManager");
    s.RegisterPostBackControl(link);
    

    ... 但变化不大,页面已完全重新加载,但没有触发任何事件。

    编辑:根据注释中的要求,以下是有关嵌套的更多详细信息:

    MasterPage
      PlaceHolder
        Page
          UpdatePanel
            UserControl1
              FormView
                PlaceHolder
                  UserControl2
                    LinkButton
    

    这意味着 UserControl2 是动态加载的。

    3 回复  |  直到 17 年前
        1
  •  2
  •   Richard Shadman    16 年前

        2
  •  0
  •   user31571    17 年前

    我记得我也有这个问题。我没有发现真正的问题,但我所做的是,在aspx标记中连接eventhandler,它成功了。

    尝试PreInit eventhandler。

    here .

        3
  •  0
  •   456qwe123asd    14 年前

    对于ajax,我认为可以创建一个可重用的类

    public void registerUCAsyncPostBack(Page page, WebControl webcontrol, UserControl usercontrol){
                Control ControlAjaxNew = null;
                if (webcontrol.GetType() == typeof(LinkButton))
                {
                    ControlAjaxNew = (LinkButton)usercontrol.FindControl(webcontrol.ID);
                }
                ScriptManager.GetCurrent(page).RegisterAsyncPostBackControl(ControlAjaxNew);
            }
    
    推荐文章