关于用户控件的问题,请大家解决一下

foolfish_yanzi 2009-05-04 07:49:53
我做了连个用户控件
主控件main.aspx:主要用来调用其他控件,里面用一个PlaceHolder来盛放被调用的控件
另一个是被调用的控件:test.ascx,控件中有一个LinkButton还有一个Label,一开始,Label不可见,当点击LinkButton时,Label可见。
最后测试的时候,发现一个问题:主控件可以调用test控件,但是,当点击test控件中的LinkButton时,并没有正常显示Label,界面反而变成没有调用test控件时的样子了。
这是为什么呢?
在线等,麻烦大家了……
...全文
107 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
leobow 2009-05-22
  • 打赏
  • 举报
回复
在主页面把该linkbutton设为异步执行模式
ScriptManager1.RegisterAsyncPostBackControl(LinkButton1);
leobow 2009-05-22
  • 打赏
  • 举报
回复
控件所在的updatepanel的触发器(trigger)要设为该控件里面的linkbutton.
在主页面把该linkbutton设为异步执行模式,就不会刷新整个页面了。
建议ajax的内容还要仔细看看才行,很多细节的
foolfish_yanzi 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 SillenDLiu 的回复:]
点了LinkButton之后会PostBack,然后Main.aspx会Page_Load一下,test.ascx也会Page_Load一下。
Page_Load里面的码子,注意加上对IsPostBack的判断

Page_Load里面设上断点跟踪调试一下,看看服务器端是如何运行的
[/Quote]

两个用户控件都需要在PageLoad进行判断吗》我的PageLoad中什么也没有,不知道怎么操作,辛苦您再说一下可以吗?
foolfish_yanzi 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 leobow 的回复:]
因为你点击LinkButton后,页面重新加载了。你点击LinkButton时不要让他刷新整个页面就可以了。
有两种办法
一是把控件放在updatepanel中,用ajax技术只刷新该控件。
二是不要让控件动态加载,而是主页面初始化时就已经加载。
[/Quote]


我刚使了UpdatePanel,为什么页面还是会刷新呢?
代码:
<div>
1:运行时时间:<br />
<%= DateTime.Now.ToLongTimeString()%>点击下面的按钮后,还是会更新这里的时间啊,应该不更新才对吧,这是为什么呢》
<asp:Label ID="Label2" runat="server" Text="这里包括以上内容应该不刷新的:不要闪来闪去的哦!"></asp:Label><br />
</div>
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

</div>
<br />
下面的内容,要局部刷新,局部刷新哦<br />
一、更新模式:<br />
1、UpdateMode为Always<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div>
上次更新时间:<%= DateTime.Now.ToLongTimeString()%>
</div>
<div>
<asp:Button ID="dian" runat="server" Text="Update" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
foolfish_yanzi 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 leobow 的回复:]
因为你点击LinkButton后,页面重新加载了。你点击LinkButton时不要让他刷新整个页面就可以了。
有两种办法
一是把控件放在updatepanel中,用ajax技术只刷新该控件。
二是不要让控件动态加载,而是主页面初始化时就已经加载。
[/Quote]

嗯,现在用了最笨的一种方法,解决问题了,就是静态加载,然后,点击LinkButton后通过Visible属性来实现具体用哪个被调用控件。我再试试别的方法。

Sillen 2009-05-04
  • 打赏
  • 举报
回复
点了LinkButton之后会PostBack,然后Main.aspx会Page_Load一下,test.ascx也会Page_Load一下。
Page_Load里面的码子,注意加上对IsPostBack的判断

Page_Load里面设上断点跟踪调试一下,看看服务器端是如何运行的

foolfish_yanzi 2009-05-04
  • 打赏
  • 举报
回复
嗯,老师让做个东东,边学边做,还好,在这里有大家帮忙,真的很感谢!
加油加油!
foolfish_yanzi 2009-05-04
  • 打赏
  • 举报
回复
请问:怎么加呢?
在控件的Page_Load中写么?
wuyq11 2009-05-04
  • 打赏
  • 举报
回复
刷新页面后控件丢失。通过ajax pro实现局部刷新
leobow 2009-05-04
  • 打赏
  • 举报
回复
不用谢,其实我也在等一个firefox兼容性问题,也是心急火燎的。
foolfish_yanzi 2009-05-04
  • 打赏
  • 举报
回复
恩,谢谢你!
Ajax只听说过,没用过,我尝试下看看。
SK_Aqi 2009-05-04
  • 打赏
  • 举报
回复
控件中加 IsPostBack()
leobow 2009-05-04
  • 打赏
  • 举报
回复
因为你点击LinkButton后,页面重新加载了。你点击LinkButton时不要让他刷新整个页面就可以了。
有两种办法
一是把控件放在updatepanel中,用ajax技术只刷新该控件。
二是不要让控件动态加载,而是主页面初始化时就已经加载。
foolfish_yanzi 2009-05-04
  • 打赏
  • 举报
回复
这里要是可以贴图就好了,大家看到图会更清楚我在说什么的

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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