我在用户点击另一个LinkButton时动态加载LinkButton.我正在附加一个事件处理程序.当用户单击动态加载的LinkButton时,事件不会触发.
从我一直在阅读的内容中,我理解这是因为当页面回发时,动态加载的控件不再存在.看起来我应该确保在Page_Init中重新创建此控件.
动态创建的LinkButton取决于值(产品ID).我需要一些访问此值,以便我可以正确创建控件.ViewState无法访问,我担心如果我使用Session它可能会超时,然后这无济于事.有任何想法吗?
此外,我硬编码产品ID值仅用于测试,但仍未导致事件触发.我还需要做些什么吗?
protected void Page_Init(object sender, EventArgs e) { SetTabText(1, 1); }
SetTabText调用创建LinkButton的SetActionLinks:
protected Panel SetActionLinks(int prodID, int tabID) { ... LinkButton lnkBtn = new LinkButton(); lnkBtn.ID = "lnkBtn" + rand.Next().ToString(); lnkBtn.CommandName = "action"; lnkBtn.Command += new CommandEventHandler(this.lnkAction_Command); panel.Controls.Add(lnkBtn); ... } void lnkAction_Command(object sender, CommandEventArgs e) { LinkButton btn = (LinkButton)sender; switch (btn.CommandArgument) { AddCart(); } }
Ender.. 6
您可以将产品ID放在隐藏字段中,并使用Page_Init获取其值
Page.Request(Page.FindControl("hdnPageIdField"))
这样您就不需要依赖ViewState或SessionState
另外对于动态控件我强烈建议你阅读这个greate arcticle系列
您可以将产品ID放在隐藏字段中,并使用Page_Init获取其值
Page.Request(Page.FindControl("hdnPageIdField"))
这样您就不需要依赖ViewState或SessionState
另外对于动态控件我强烈建议你阅读这个greate arcticle系列