如何解决用户控件中的按钮事件没有被激发的问题,急!!

simonw 2004-08-23 03:59:35
主页面:index.aspx (点击注册连接时候加载 reg.ascx )
注册控件:reg.ascx (包含info.ascx,有一个注册的button,点击后调用getinfo()取得数据加入数据库)
用户信息控件:info.ascx(包含用户需要填入的信息项目,有一个返回组织后的数据的方法getinfo())

index页面上放一个palceholder用于加载用户控件.当加载注册控件,填写完成用户信息后点击注册,注册控件消失并且没有激发注册button的事件.应该是回传页面时丢失了palceholder中的信息吧,在不改变上述情况下如何解决注册button没有被激发的问题?

谢谢.
...全文
390 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
simonw 2004-08-26
  • 打赏
  • 举报
回复
问了一圈人没有问到,自己想了好久终于把问题解决了,参考msdn的说法:
如果在现有控件之间插入动态控件,该动态控件的视图状态信息将插入到视图状态结构的相应位置。在发送页并加载视图状态时,动态控件还不存在;因此,视图状态中的附加信息将不会对应于正确的控件.

于是我回传页面的时候我把控件保存在session中,保存了状态,于是解决了.就这么简单!

真不知道该把分数给谁,见者有分吧,感谢大家支持!
simonw 2004-08-26
  • 打赏
  • 举报
回复
楼上说的公开控件中的事件方法并不可行,因为主页面上的多个控件都是动态添加的,如果公开了每个控件的事件,那么必须再主页面下写事件实现,导致扩展性变差.
caiyajun512 2004-08-25
  • 打赏
  • 举报
回复
viewstate你可以在控件内写。
如定义属性
public string str
{
get{return (string)ViewState["mystr"];}
set{ViewState["mystr"]=value;}
}

这样你就能取str了。

------
事件引发。
button的事件引发了。
可以把button的事件绑定方法,做发送数据到数据库的处理。

this.Button.Click+=new System.Eventhandler(this.function)
-----
或者,
声明事件。
public Event Click;
在需要引发的地方调用。
this.Click(this,Event.Empty).
---
你查下帮助,调试一下。
-----


simonw 2004-08-24
  • 打赏
  • 举报
回复
private void lbtReg_Click(object sender, System.EventArgs e)
{
Control reg = this.LoadControl("UserControl/Reg.ascx");
placeholder.Controls.Add(reg);
}
这是首页面按钮下的写法.
simonw 2004-08-24
  • 打赏
  • 举报
回复
page_load里没有任何代码,不同动态控件的加载是通过主页面上的按钮触发的,没法在page_load里写.
simonw 2004-08-24
  • 打赏
  • 举报
回复
msdn中在动态控件和视图状态这个章节说:如果在现有控件之间插入动态控件,该动态控件的视图状态信息将插入到视图状态结构的相应位置。在发送页并加载视图状态时,动态控件还不存在;因此,视图状态中的附加信息将不会对应于正确的控件。结果通常是出现表明存在无效强制转换的错误。

但是没有给怎么解决啊
guxiangdefeng 2004-08-24
  • 打赏
  • 举报
回复
动态添加的话,可能每次提交都要添加一下.
程序是先执行page_load,再执行控件的事件的.
提交的时候在page_load里看一下该控件是否为nothing
simonw 2004-08-24
  • 打赏
  • 举报
回复
我用session保存了都不行,viewstate还不可以放这个控件,楼上的最好做个试验
goody9807 2004-08-24
  • 打赏
  • 举报
回复
用ViewState保存状态


把palceholder放入ViewState中式式
simonw 2004-08-24
  • 打赏
  • 举报
回复
up
simonw 2004-08-23
  • 打赏
  • 举报
回复
up
simonw 2004-08-23
  • 打赏
  • 举报
回复
问题是button根本不响应事件,我都不知如何是好,你仔细看看我得问题,描述得很清晰了,谢谢!
caiyajun512 2004-08-23
  • 打赏
  • 举报
回复
你跟踪一下Button事件。
ok---在ViewState中记录控件数据和相关信息,以便下次用。
no--
if(!Page.idPostback)
{
//第一次加载控件。
}

看不到具体情况,试吧。
simonw 2004-08-23
  • 打赏
  • 举报
回复
ViewState默认都是开得,我应该怎么处理?
caiyajun512 2004-08-23
  • 打赏
  • 举报
回复
动态把控件加载到表单,在表单发送之间不保留控件。
就是控件不保留在ViewState中,但数据被保留在ViewState中。
你必须在ViewState中做处理。
simonw 2004-08-23
  • 打赏
  • 举报
回复
问题是按钮在控件里啊,控件是动态加载进去得
codeangel 2004-08-23
  • 打赏
  • 举报
回复
在加载页面时就将事件写进去。
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
加入到Page_Load里,要在IsPostBack外面写。
simonw 2004-08-23
  • 打赏
  • 举报
回复
救命呀.各位
simonw 2004-08-23
  • 打赏
  • 举报
回复
up
simonw 2004-08-23
  • 打赏
  • 举报
回复
问题是按钮事件没有被激发啊
加载更多回复(9)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧