又发现Atlas中UpdatePanel的一个控件兼容问题,不知道有没有人碰到过。思归,孟子等高手们都来看看吧。详情见内!

Alton1981 2006-09-01 01:22:29
我的页面十分简单,在一个页面Test.aspx上放一个UpdatePanel1,里面放了一个PlaceHolder1控件和一个Button1按钮,点击Button时动态加载一个UserControl(WebUserControl.ascx),UserControl里有一个LinkButton1和一个TextBox1,点击LinkButton1使得TextBox1的Text加上等于“ABC”。

Test.aspx代码:
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (ViewState["ControlID"] != null)
{
AddControl();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
ViewState["ControlID"] = "WebUserControl";
AddControl();
}

private void AddControl()
{
UserControl uc = (UserControl)LoadControl("~/WebUserControl.ascx");
uc.ID = "WebUserControl";
this.PlaceHolder1.Controls.Clear();
this.PlaceHolder1.Controls.Add(uc);
}
}

WebUserControl.ascx代码:
public partial class WebUserControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void LinkButton1_Click(object sender, EventArgs e)
{
this.TextBox1.Text += "ABC";
}
}

前置页代码我就不贴了,很简单,控件托上去就有了。
我的UpdatePanel的设置都没问题,Atlas的版本也最新。我用Button代替LinkButton就没问题,但用LinkButton就会报Javascript的错误。

不知哪位高手可以解决?小弟在这里多谢了!
...全文
555 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyt0828 2006-09-01
  • 打赏
  • 举报
回复
那是因为这行变成selectedrow了,你要在<SelectedRowStyle />中设定他的样式
是这个问题嘛?
Alton1981 2006-09-01
  • 打赏
  • 举报
回复
问题解决,散分!
Alton1981 2006-09-01
  • 打赏
  • 举报
回复
@zhuyt0828(假扮的猛男)
但这样用好像linkbutton的样式都没了
我现在在GridView中的点击CommondField的“选择”后,该行的样式就没了,不知道什么原因,请执教!
zhuyt0828 2006-09-01
  • 打赏
  • 举报
回复
fangxinggood(JustACoder) 的方法比较好,也给出解释了
机器人 2006-09-01
  • 打赏
  • 举报
回复
那是因为 AltasProxy 无法直接在页面上注册 __doPostBack() javascript

LinkButton 触发服务端事件,需要这个方法:

<a id="WebUserControl_LinkButton1" href="javascript:__doPostBack('WebUserControl$LinkButton1','')">LinkButton</a>

直接的解决方法是:

Test.aspx 上加入:

<script type="text/javascript">
<!--
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// -->
</script>
Alton1981 2006-09-01
  • 打赏
  • 举报
回复
@zhuyt0828(假扮的猛男)
照你的说法试了一下,果然可以。多谢
不过我也不知道原因。请高手赐教!
cat_hsfz 2006-09-01
  • 打赏
  • 举报
回复
首先,如果单纯把UpdatePanel去掉(也就是删除<altas:UpdatePanel>和<ItemTemplate>这两层标记),页面正常吗?

也有可能Atlas在页面生命周期的某一阶段后就不再接受其内部动态添加的控件。
zhuyt0828 2006-09-01
  • 打赏
  • 举报
回复
之前报错是因为页面上没有找到__doPostBack('WebUserControl$LinkButton1','')
我在页面加了一个linkbutton之后,他会自动给页面添加<script type="text/javascript">
<!--
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// -->
</script>
这样就找到调用的方法了
linkbutton如果visible=false他也不会加这个方法
zhuyt0828 2006-09-01
  • 打赏
  • 举报
回复
我找到了解决办法,但是我不知道什么原因
我在test页面加了个linkbutton然后dispaly:none,这样就能用了。。。。
大家揣摩一下到底啥道理啊
Alton1981 2006-09-01
  • 打赏
  • 举报
回复
首先感谢各位的支持!但请劳驾各位帮忙请高手进来,老是顶也不是办法啊。谢了!
stevenfangzheng 2006-09-01
  • 打赏
  • 举报
回复
又顶
stevenfangzheng 2006-09-01
  • 打赏
  • 举报
回复
顶一个,期待结果!
easthero 2006-09-01
  • 打赏
  • 举报
回复
“又”。哈哈。
lucky..J 2006-09-01
  • 打赏
  • 举报
回复
同情
Alton1981 2006-09-01
  • 打赏
  • 举报
回复
这个问题困捞了我两天了,十分紧急,难道真的没人知道吗?
好歹也提点建议吧,跪谢了!!!
lucky..J 2006-09-01
  • 打赏
  • 举报
回复
关注
Alton1981 2006-09-01
  • 打赏
  • 举报
回复
不知道这个是Atlas的Bug还是有其他设置的问题,还请各位同僚提供帮助。
谢谢!
Alton1981 2006-09-01
  • 打赏
  • 举报
回复
有哪位可以通知思归、孟子的,帮我通报一声,我真的很急,谢谢了!
Alton1981 2006-09-01
  • 打赏
  • 举报
回复
@feixiangdg()
启示我做这个例子是因为在GridView中SelectCommand是linkButton类型
正是因为碰到了才做这个例子尝试的,结果与我的预料完全相同。所以法帖求助帮忙!
feixiangdg 2006-09-01
  • 打赏
  • 举报
回复
那就不要用LinkButton.
加载更多回复(10)

62,046

社区成员

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

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

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

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