加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 动态加载控件 – 如何访问Page_Init中的值

发布时间:2020-12-16 07:25:58 所属栏目:asp.Net 来源:网络整理
导读:我在用户点击另一个LinkBut??ton时动态加载LinkBut??ton.我正在附加一个事件处理程序.当用户单击动态加载的LinkBut??ton时,事件不会触发. 从我一直在阅读的内容中,我理解这是因为当页面回发时,动态加载的控件不再存在.看起来我应该确保在Page_Init中重新创建
我在用户点击另一个LinkBut??ton时动态加载LinkBut??ton.我正在附加一个事件处理程序.当用户单击动态加载的LinkBut??ton时,事件不会触发.

从我一直在阅读的内容中,我理解这是因为当页面回发时,动态加载的控件不再存在.看起来我应该确保在Page_Init中重新创建此控件.

动态创建的LinkBut??ton取决于值(产品ID).我需要一些访问此值,以便我可以正确创建控件. ViewState不可访问,我担心如果我使用Session它可能会超时,然后这无济于事.有任何想法吗?

此外,我硬编码产品ID值仅用于测试,但仍未导致事件触发.我还需要做些什么吗?

protected void Page_Init(object sender,EventArgs e)
{
   SetTabText(1,1);
}

SetTabText调用创建LinkBut??ton的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();
   }
}

解决方法

您可以将产品ID放在隐藏字段中,并使用Page_Init获取其值

Page.Request(Page.FindControl("hdnPageIdField"))

这样您就不需要依赖ViewState或SessionState

另外对于动态控件我强烈建议你阅读this greate arcticle series

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读