随笔-312  评论-12034  文章-2  trackbacks-256
英文版见:http://dflying.dflying.net/1/archive/96_introduction_to_atlas_updatepanel.html

UpdatePanelASP.NET Atlas中很重要的一个控件。它把传统的ASP.NET程序与最新的Web 2.0 AJAX无缝的连接在一起。如果你已经有一些基于ASP.NET的网站,UpdatePanel可以让你通过很小的修改轻松的实现AJAX。如果你并不很熟悉AJAX相关的技术比如JavaScript/DOM等,UpdatePanel更是可以让你不用书写一行客户端脚本而实现酷酷的AJAX应用。所需要的就是把需要动态更新的部分放置于一个UpdatePanel中,这一点与MagicAjax Framework有着异曲同工之妙。

使用UpdatePanel很简单,只需要如下几个步骤:

  1. ASP.NET实现你的设计,此刻你并不需要考虑任何有关AJAX的问题,就像普通的ASP.NET程序一样。
  2. 在页面上添加一个ScriptManager对象,并设定属性EnablePartialUpdates=true
  3. 将你希望动态更新的部分用UpdatePanel包围起来
  4. 为你添加的UpdatePanel设定Event Trigger

 

只要这些步骤就够了,不需要考虑XMLHTTPRequest或者ActiveX对象,也不需要书写客户端的脚本或者考虑如何与服务器通信,所有的细节,Atlas已经为你做好了。

Atlas UpdatePanel的实现也很简单:浏览器如同普通PostBack一样Post回服务器,服务器处理后再次发送给浏览器,这个过程就和传统的页面模型一样。但到达客户端时ScriptManager只更新位于UpdatePanel中的内容和ViewState

使用UpdatePanel中应该注意的几个问题:

必须指定ScriptManager 中的属性EnablePartialUpdates=true,这样ScriptManager才会将普通的PostBack转化为对服务器的异步调用,也就是AJAX的方法。否则页面只会与传统的ASP.NET一样刷新。

其次,UpdatePanel提供两种引发异步PostBackTrigger

  • ControlValueTrigger当某个控件的某个指定的属性变化时更新。例如:ControlID="dropDownList1" PropertyName="SelectedValue"
  • ControlEventTrigger当某个控件发出指定事件时更新。例如:ControlID="button1" EventName="Click"

最后,每个UpdatePanel都有两种更新的方式:

  • Always每次AJAX PostBack或是普通PostBack的时候都会更新该Panel的内容
  • Conditional只有满足如下某一条件时才更新该Panel的内容:
    1. Panel中的某个控件引发了PostBack
    2. Panel所指定的某个Trigger被引发时
    3. PanelUpdate()方法在Codebehind中被调用时

 

一小段UpdatePanel的例子
 1<atlas:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" />
 2<atlas:UpdatePanel ID="up1" runat="server">
 3 <Triggers>
 4     <atlas:ControlValueTrigger ControlID="dropDownList1" PropertyName="SelectedValue" />
 5     <atlas:ControlEventTrigger ControlID="button1" EventName="Click" />
 6 </Triggers>
 7 <ContentTemplate>
 8     Content Here. e.g. TextBox, GridView
 9 </ContentTemplate>
10</atlas:UpdatePanel>
11

 

另外还有两个有用的Atlas特性:UpdateProgress控件可以在更新的等待时间自动显示一段提示信息,可以是一段“更新中……”文字也可以是GIF图像或者是更复杂的定制的内容。还有Atlas提供的错误处理机制,以便集中处理更新中可能发生的错误。目前有很多AJAX程序的错误处理机制设计的并不是很好,包括Windows Live Mail

 

(这篇文章我先写的英文版,然后才是这个翻译版本。自己本身语言能力有限,有些地方生硬甚至语句不通顺,还请各位见谅。今后我会勤加练习用中文表达。更多的Atlas文章可以参考我的英文Bloghttp://dflying.dflying.net/

posted on 2006-03-25 14:19 Dflying Chen 阅读(14003) 评论(101)  编辑 收藏 网摘 所属分类: ASP.NET 综合ASP.NET AJAX (Atlas)

评论:
#1楼  2006-03-25 14:23 | AlexHe.cs [未注册用户]
要如何才能把UpdateProgress放在右上角啊
  回复  引用    
#2楼 [楼主] 2006-03-25 14:28 | Dflying Chen      
@AlexHe.cs
您可以认为UpdateProgress就是一个普通的类似Label的ASP.NET控件,可以采用CSS定位等方法将其置于页面上的任何位置。

  回复  引用  查看    
#3楼  2006-03-25 15:04 | DW [未注册用户]
写的很好.
  回复  引用    
#4楼  2006-03-25 15:07 | WL [未注册用户]
不错!!!
  回复  引用    
#5楼  2006-03-25 15:45 | dudu      
不错! 正打算在博客园发表评论的页面中采用Atlas。
  回复  引用  查看    
#6楼 [楼主] 2006-03-25 15:51 | Dflying Chen      
@DW
@WL
@dudu
Thanks and let's make it better ;-)

@dudu
最简单的方法就是用两个UpdatePanel了,一个给Comment List一个给Comment Form,方便与现有系统集成。

  回复  引用  查看    
#7楼  2006-03-25 15:54 | Jemmy [未注册用户]
跟asp.net上的那个视频说的一样嘛,哈哈
  回复  引用    
#8楼  2006-03-25 16:32 | neuhawk1 [未注册用户]
呵呵,昨天刚用上,今天就有文章了.
对于treeview,数据量较大用updatepanel好象很慢.

  回复  引用    
#9楼  2006-03-25 16:35 | dudu      
@Dflying Chen
谢谢你的建议!我正打算采用这种方式。

  回复  引用  查看    
#10楼  2006-03-25 19:27 | 阿不      
有一点补充:关于UpdateProgress,它支持取消操作,当你等待很久时需要取消你的操作时,还可以在ProgressTemplate内放一个LinkButton(或者普通的button)然后将它的控件ID设为:abortButton就行了,(注意控件ID一定要是abortButton,它内部是这样去找控件的 Control control1 = this.FindControl("abortButton");
)

  回复  引用  查看    
#11楼  2006-03-25 19:30 | 阿不      
@neuhawk1
是的,用在TreeView的时候好像都比较慢,这点我也深有体会.

  回复  引用  查看    
#12楼 [楼主] 2006-03-25 20:22 | Dflying Chen      
@阿不
如果有好多个UpdateProgress的话会怎么样呢?我想需要进一步研究。

  回复  引用  查看    
#13楼  2006-03-25 21:37 | 阿不      
@Dflying Chen
原来也没试过,刚好刚刚开着IDE,试了一下。当有多个UpdateProgress的时候,使用UpdatePanel时会同时出现这些UpdateProgress的提示。不会像ScriptManager一样,一个页面只允许一个实例。

  回复  引用  查看    
#14楼 [楼主] 2006-03-27 16:00 | Dflying Chen      
@阿不
根据http://www.nikhilk.net/AtlasM1Refresh.aspx,abortButton确实是一个Magic ID。这并不是一个很好的设计,相信在未来的版本中会有所改变。谢谢你的细心。

  回复  引用  查看    
#15楼 [楼主] 2006-03-27 17:52 | Dflying Chen      
@阿不
UpdateProgress理论上也不应该有多个。

  回复  引用  查看    
#16楼  2006-03-27 19:15 | 阿不      
@Dflying Chen
是的,出现多个UpdateProgress是不大合理的.关于abortButton,至少在目前的版本(March CTP)还没有看到一些变化.另外目前的版本虽然增加了WebPart对Firefox的拖拉支持,但是在使用过程却出现了更多的问题.对第三方控件的支持很不好.

  回复  引用  查看    
#17楼 [楼主] 2006-03-27 19:35 | Dflying Chen      
@阿不
第三方控件是指……?

  回复  引用  查看    
#18楼  2006-03-27 19:59 | 阿不      
如FreeTextBox,再有博客园里Thin写的日期控件,等.支持都不是很好.今天还发现一个问题,在原来的版本可以运行得很好,可在新版本里却会出现问题.搞得我今天好烦.
  回复  引用  查看    
#19楼 [楼主] 2006-03-27 20:07 | Dflying Chen      
@阿不
Ooops,确实跨平台的JavaScript程序比较难以完美的实现,特别是像Atlas这样大的架构。只能期待Release的时候会少些Bug吧……

  回复  引用  查看    
#20楼  2006-03-27 20:40 | rimbaud      
好象有让人变笨的感觉~!~-_-#!
  回复  引用  查看    
#21楼 [楼主] 2006-03-27 22:43 | Dflying Chen      
@rimbaud
发展的趋势就是越来越简化阿;-)

  回复  引用  查看    
#22楼  2006-03-28 13:05 | 扬长而去 [未注册用户]
atlas ajax框加哪里有的下啊
还是包含在framework 2.0 里的

  回复  引用    
#23楼  2006-03-28 13:35 | 阿不      
@扬长而去
是一个单独的开发包,在 atlas.asp.net 下.

  回复  引用  查看    
#24楼  2006-03-29 18:15 | H_J_H [未注册用户]
新手上路,
小弟路经此地请问这个控件哪里有的下或有具体例程吗?谢谢!

  回复  引用    
#25楼  2006-03-29 18:20 | H_J_H [未注册用户]
顺便问有是.NET 1.1的吗?
  回复  引用    
#26楼 [楼主] 2006-03-29 20:36 | Dflying Chen      
#27楼 [楼主] 2006-03-29 20:36 | Dflying Chen      
@H_J_H
没有针对1.1的,如果您需要,可以考虑使用第三方的Atlas类库。

  回复  引用  查看    
#28楼  2006-03-31 10:07 | tonghu008 [未注册用户]
我用atlas按照那个视频上做,做出来"编辑","取消"都是中文的,要是我想把这些做成英文的该怎么做啊?

  回复  引用    
#29楼 [楼主] 2006-03-31 12:46 | Dflying Chen      
@tonghu008
可以在ASPX文件中修改。

  回复  引用  查看    
#30楼  2006-03-31 14:08 | tonghu008 [未注册用户]
aspx中没有,那中文的"编辑","取消"等,我用vs2005中的搜索在整个项目中都找不到,我想可能是atlas包中的,不知道怎么才能把这种中文修改成英文的"编辑","取消"等这些自动生成的@Dflying Chen

  回复  引用    
#31楼 [楼主] 2006-03-31 14:34 | Dflying Chen      
@tonghu008
可以指定UpdateText的,例如:
<asp:CommandField UpdateText="English" ShowDeleteButton="True" ShowEditButton="True" />

  回复  引用  查看    
#32楼  2006-03-31 20:09 | 思考中{OO}      
请问一下我把它放在DataList的<HeaderTemplate>中为什么不能使用,报告错误:
"The UpdatePanel 'panelTest' was not present when the page's InitComplete event was raised. This is usually caused when an UpdatePanel is placed inside a template."
是不是真的就不能放在里面,或者有没有其它实现同样效果的方法,谢谢1

  回复  引用  查看    
#33楼 [楼主] 2006-03-31 20:47 | Dflying Chen      
@思考中{OO}
错误信息中提示在Page发出InitComplete事件时候,无法找到UpdatePanel的实例,这是因为HeaderTemplate的内容只有在Binding的时候才初始化,而UpdatePanel需要在PageInit的时候就存在。
我目前不知道有什么办法可以解决这个问题,希望有高人指点。

  回复  引用  查看    
#34楼  2006-03-31 21:43 | 阿不      
@思考中{OO}
你的那个错误应该是这样的,你的UpdatePanel包含了一个不完整的HTML标记。
比如:
<td>
<atlas:UpdatePanel id="up1"....
</td>
</atlas:UpdatePanel>

或:
<atlas:UpdatePanel id="up1"..>
<table>
</atlas:UpdatePanel>
</table>
等等,不成对的HTML标记。我想应该是这样的,你仔细检查一下,或者你把整个DataList包起来肯定没问题的。

  回复  引用  查看    
#35楼  2006-04-01 09:04 | 思考中{OO}      
@Dflying Chen
知道了,谢谢!

@阿不
问题就如同Dflying Chen所说的没错了,不过如果把整个DataList包起来的话基本变成整个页面刷新了,效果并不是很理想,而且访问DataList里面的控件也是另一个问题

  回复  引用  查看    
#36楼  2006-04-05 00:20 | 么么茶.NET      
不错,这篇文章经典,但是有个问题,如果是大数据量的话,每次操作更新都会很慢喽?
  回复  引用  查看    
#37楼 [楼主] 2006-04-05 09:01 | Dflying Chen      
@么么茶.NET
是的,关于UpdatePanel的性能分析,请参考:http://dflying.cnblogs.com/archive/2006/04/01/363998.aspx

  回复  引用  查看    
#38楼  2006-04-14 11:35 | huhu456 [未注册用户]
UpdateProgress 在那里啊
  回复  引用    
#39楼 [楼主] 2006-04-14 13:26 | Dflying Chen      
@huhu456
是一个Atlas Server side 控件

  回复  引用  查看    
#40楼  2006-04-14 17:05 | huhu456 [未注册用户]
你好 你们有研究这个的群吗? 我今天试了一下 我想做一个 能反应出各个阶段状态的UpdateProgress 有什么好的想法, 比如有好多过程的操作, 提交之后要经过 验证身份, 读取数据库,返回数据 就这样吧
我给它的摸板里头放的label 想在各个阶段给label 指定值 可是不能控制 能教教我吗?

  回复  引用    
#41楼  2006-04-14 17:06 | huhu456 [未注册用户]
Dflying Chen 你是我心目中的神 呵呵
  回复  引用    
#42楼 [楼主] 2006-04-14 17:09 | Dflying Chen      
@huhu456
您可以参考我的这篇文章:http://dflying.cnblogs.com/archive/2006/03/28/361146.aspx

  回复  引用  查看    
#43楼  2006-04-14 17:28 | huhu456 [未注册用户]
可是这个的js代码要自己写啊, 我想问的是 如果每次都得自己写哪个 不是很麻烦啊
用UpdateProgress 可以实现吗?

  回复  引用    
#44楼  2006-04-14 17:30 | huhu456 [未注册用户]
我是个 刚开始接触Atlas的不要见笑啊
  回复  引用    
#45楼 [楼主] 2006-04-14 17:36 | Dflying Chen      
@huhu456
Atlas的一点优势就是为JavaScript提供了强大的OO支持。也就是说您可以一次创建您的控件,并在将来可以很方便的重用。所以,您不需要每次都从头开始书写代码。

  回复  引用  查看    
#46楼 [楼主] 2006-04-14 17:37 | Dflying Chen      
@huhu456
使用UpdateProgress没法实现的

  回复  引用  查看    
#47楼  2006-04-17 11:22 | huhu456 [未注册用户]
多谢Dflying Chen的指点啊
  回复  引用    
#48楼 [楼主] 2006-04-17 11:35 | Dflying Chen      
@huhu456
过奖了……共同进步

  回复  引用  查看    
#49楼  2006-04-19 16:50 | cmoremore [未注册用户]
有个问题,我在一个用户控件里实现了updatepanel,然后放到一个摸版页的页面里,这个时候好像就不好用了

如果页面不包含摸版页那种的就好用,我想知道为什么?

  回复  引用    
#50楼 [楼主] 2006-04-19 17:06 | Dflying Chen      
@cmoremore
您应该把ScriptManager放置在Master Page中。

  回复  引用  查看    
#51楼  2006-04-20 09:00 | cmoremore [未注册用户]
你好

你的意思是说只把ScriptManager那句话放到Master Page中

而其他的代码还是在用户控件里面写?

  回复  引用    
#52楼 [楼主] 2006-04-20 09:06 | Dflying Chen      
@cmoremore
是的

  回复  引用  查看    
#53楼  2006-04-20 09:13 | cmoremore [未注册用户]
刚才试验了一下,有一个很奇怪的现象

没有Master Page的时候一起正常

有了Master Page的时候按照你的方法进行了设置,这时候的现象是点下触发事件后,字体变大了,这时候就停住了,没有任何反应,要显示的东西也没有显示出来,请问这是什么原因造成的?

  回复  引用    
#54楼 [楼主] 2006-04-20 09:19 | Dflying Chen      
@cmoremore
sigh,您的这种描述谁也没办法知道发生了什么的。
我只能重复一遍:

Master Page: ScriptManager.
Page: Your UserControl.
UserControl: UpdatePanel and content.

  回复  引用  查看    
#55楼  2006-04-20 09:20 | cmoremore [未注册用户]
补充一下,刚才是设置成always出现的现象

设置成Conditional的话

在Master Page加了<atlas:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" />这句话还是引起来回发

  回复  引用    
#56楼  2006-04-20 09:23 | cmoremore [未注册用户]
i see, i will try more,thx
  回复  引用    
#57楼 [楼主] 2006-04-20 09:26 | Dflying Chen      
@cmoremore
不会吧?我还特意试验过的,一切正常啊

  回复  引用  查看    
#58楼  2006-04-20 09:36 | cmoremore [未注册用户]
。。奇怪了

我得简单代码

Master Page:
<body>
<form id="form1" runat="server">
<atlas:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" />
<table align="center" border="0" cellpadding="0" cellspacing="0" width="800">

Page:

<asp:Content ID="cntPage" ContentPlaceHolderID="cphPage" runat="Server" EnableViewState="false">
<HuaXiangRongControl:AboutUs id="AboutUs1" runat="server">
</HuaXiangRongControl:AboutUs>
</asp:Content>


UserControl:

<div align="center">
<asp:Menu CssClass="productName" ID="Menu1" Width="300px" runat="server" Orientation="Horizontal" StaticEnableDefaultPopOutImage="False" OnMenuItemClick="Menu1_MenuItemClick">
<Items>
<asp:MenuItem Text="关于我们" Value="0"></asp:MenuItem>
<asp:MenuItem Text="联系我们" Value="1"></asp:MenuItem>
<asp:MenuItem Text="付款方式" Value="2"></asp:MenuItem>
</Items>
</asp:Menu>

<atlas:UpdatePanel ID="up1" runat="server" Mode=Conditional>
<Triggers>
<atlas:ControlValueTrigger ControlID="Menu1" PropertyName="SelectedItem" />
<atlas:ControlEventTrigger ControlID="Menu1" EventName="MenuItemClick" />

</Triggers>

<ContentTemplate>
<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="View1" runat="server">
<textarea>111111111</textarea>
</asp:View>
<asp:View ID="View2" runat="server">
<textarea> 222222222222222</textarea>
</asp:View>
<asp:View ID="View3" runat="server">
<textarea>333333333333333</textarea>
</asp:View>
</asp:MultiView>
</ContentTemplate>
</atlas:UpdatePanel>
</div>

很奇怪,总是回发。。。

  回复  引用    
#59楼 [楼主] 2006-04-20 09:42 | Dflying Chen      
@cmoremore
如果您设置了OnMenuItemClick="Menu1_MenuItemClick",并且有后台代码处理Menu1_MenuItemClick的话,那么需要把Menu也包含在一个UpdatePanel中。

  回复  引用  查看    
#60楼  2006-04-20 10:08 | cmoremore [未注册用户]
代码经过你指点后,我改成这样,看了你的文章,感觉这样就应该产生异步调用了,但是现在还引起回发。。不得其解

UserControl:


<atlas:UpdatePanel ID="up1" runat="server" Mode=Conditional>
<Triggers>
<atlas:ControlValueTrigger ControlID="Menu1" PropertyName="SelectedItem" />
<atlas:ControlEventTrigger ControlID="Menu1" EventName="MenuItemClick" />
</Triggers>

<ContentTemplate>
<asp:Menu CssClass="productName" ID="Menu1" Width="300px" runat="server" Orientation="Horizontal" StaticEnableDefaultPopOutImage="False" OnMenuItemClick="Menu1_MenuItemClick">
<Items>
<asp:MenuItem Text="关于我们" Value="0"></asp:MenuItem>
<asp:MenuItem Text="联系我们" Value="1"></asp:MenuItem>
<asp:MenuItem Text="付款方式" Value="2"></asp:MenuItem>
</Items>
</asp:Menu>
</ContentTemplate>
</atlas:UpdatePanel>


<atlas:UpdatePanel ID="up2" runat="server" Mode=Conditional>


<Triggers>
<atlas:ControlValueTrigger ControlID="Menu1" PropertyName="SelectedItem" />
<atlas:ControlEventTrigger ControlID="Menu1" EventName="MenuItemClick" />
</Triggers>


<ContentTemplate>

<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="View1" runat="server">
<textarea>1111</textarea>
</asp:View>
<asp:View ID="View2" runat="server">
<textarea>222222222222222</textarea>
</asp:View>
<asp:View ID="View3" runat="server">
<textarea>333333333333333</textarea>
</asp:View>
</asp:MultiView>

</ContentTemplate>

</atlas:UpdatePanel>

  回复  引用    
#61楼 [楼主] 2006-04-20 10:22 | Dflying Chen      
@cmoremore
Menu的<Triggers> 部分是不需要写的,当然这可能不是主要原因

  回复  引用  查看    
#62楼  2006-04-20 10:36 | cmoremore [未注册用户]
恩,是那样,我看了你的这个文章的续,有个朋友有类似问题,所以我也把Menu的<Triggers>去掉了做过试验,但是还是回发,难道我rpwt......
  回复  引用    
#63楼 [楼主] 2006-04-20 10:43 | Dflying Chen      
@cmoremore
Atlas March CTP与Menu在一起会有Bug,但是在April中已经修好了。
你的版本更新过么?

  回复  引用  查看    
#64楼  2006-04-20 11:38 | cmoremore [未注册用户]
to Dflying Chen

已经是April版本的,但是以上代码还是不断回发。。


  回复  引用    
#65楼 [楼主] 2006-04-20 13:49 | Dflying Chen      
@cmoremore
我再帮您看看,看看能不能找出问题

  回复  引用  查看    
#66楼  2006-04-24 13:30 | cmoremore [未注册用户]
恩,谢谢,顺便问一个问题

atlas是不是不但需要程序中包含那个dll文件,还需要运行的服务器上安装过atlas框架

  回复  引用    
#67楼 [楼主] 2006-04-24 13:34 | Dflying Chen      
@cmoremore
程序中引入Atlas.dll即可

  回复  引用  查看    
#68楼  2006-04-24 15:08 | cmoremore [未注册用户]
恩,i do it,but 那个postback still存在,我感觉是不是还是兼容性方面有bug...
  回复  引用    
#69楼 [楼主] 2006-04-24 16:06 | Dflying Chen      
@cmoremore
我实在看不出有什么问题,在我这里都是好好的

  回复  引用  查看    
#70楼  2006-05-09 23:12 | THIN      
Atlas UpdatePanel的实现也很简单:浏览器如同普通PostBack一样Post回服务器,服务器处理后再次发送给浏览器,这个过程就和传统的页面模型一样。但到达客户端时ScriptManager只更新位于UpdatePanel中的内容和ViewState---鸡蛋里挑骨头一下,如果浏览器Post回服务器的话,势必整个页面提交,浏览器处于等待重新载入新内容状态,这样就不是异步更新效果了,所以,我觉得应该说是一个XMLHttpRequest Post回,而不是如同普通PostBack一样Post回?不知正确否??等下测试下
  回复  引用  查看    
#71楼 [楼主] 2006-05-10 09:10 | Dflying Chen      
@THIN
差不多就这样了……

  回复  引用  查看    
#72楼  2006-05-30 17:39 | wangminlikeapple [未注册用户]
@thin


貌似是不对的....

如果成立,则无法体现异步

而测试之后,发现再次刷新的时候,是不会去执行page load的

  回复  引用    
#73楼 [楼主] 2006-05-30 17:57 | Dflying Chen      
@wangminlikeapple
为什么无法体现异步?

  回复  引用  查看    
#74楼  2006-07-31 15:11 | ylhyh [未注册用户]
cmoremore


我也遇到了跟你一样的问题,不知你是否解决?
希望能与你取得联系

ylhyh@yahoo.com.cn

  回复  引用    
#75楼  2006-07-31 18:00 | ylhyh [未注册用户]
@cmoremore
我的问题解决了,我跟你的问题不太一样,我也是在MasterPage中使用了Menu
不过我刚开始也有MasterPage一起回传的情况!

后来网上查了一下资料,跟ScriptManager的位置放置没关系

入子页和MasterPage中都可以

我的是因为在Script段中没加

//<![CDATA[

//]]>

标记,加了就OK了

希望对你有用

同时感谢@Dflying Chen

  回复  引用    
#76楼 [楼主] 2006-08-05 09:11 | Dflying Chen      
@ylhyh
Cool!

  回复  引用  查看    
#77楼  2006-08-09 18:46 | ylhyh [未注册用户]
@思考中{OO}

This is usually caused when an UpdatePanel is placed inside a template

Atlas April CTP 中有此问题,不过在June CTP中已经修复了

要注意就是在你安装了Atlas ToolKit之后,第一次使用ToolKit中的控件时会提示是否更新Microsoft.Web.Atlas.dll,这时选不要更新,否则Microsoft.Web.Atlas.dll就变成April CTP的版本了,就会再出些问题

我目前安装的Atlas ToolKit使用的是Atlas April CTP

如果装了Atlas ToolKit后出了此问题,把最新的Microsoft.Web.Atlas.dll重新Copy到Bin目录下就行了

  回复  引用    
#78楼 [楼主] 2006-08-11 17:06 | Dflying Chen      
@ylhyh
是的,把最新的Microsoft.Web.Atlas.dll重新Copy到Bin目录下就行了

  回复  引用  查看    
#79楼  2006-10-12 20:33 | 11[匿名] [未注册用户]
test
  回复  引用    
#80楼  2006-10-16 13:06 | DannyLi [未注册用户]
不知道大家在使用的时候有没出现过Unknown errror??
感觉有点不解。。。

  回复  引用    
#81楼 [楼主] 2006-10-16 17:39 | Dflying Chen      
@DannyLi
您可以Debug到代码中看看到底有什么问题啊?

  回复  引用  查看    
#82楼  2006-10-21 09:30 | zhou_heb [未注册用户]
我在使用的过程也遇到了“Unknown error”
而且在Debug时什么错误也没有。
我是这样使用的:
<atlas:UpdatePanel>
<ContentTemplate>
<asp:GridView .......>......</asp:GridView>
<uc1:ChangePage ID="tcChangePage" runat="server" />
</ContentTemplate>
</atlas:UpdatePanel>
其中tcChangePage是我自己定义的具有翻页功能的用户控件,在翻页用户控件中能够翻首页、尾页及跳转到某一页,而翻页的代码都是在制作用户控件时写的。
然后使用了UpdatePanel后再翻页时就出现Unknown error错误。
请教各位了!!

  回复  引用    
#83楼  2006-10-22 15:59 | zhou_heb [未注册用户]
在应用了Microsfot新发布的Asp.net AJAX后上面的问题不存在了
高兴ing

  回复  引用    
#84楼 [楼主] 2006-10-24 08:54 | Dflying Chen      
@zhou_heb
很不错!

  回复  引用  查看    
#85楼  2006-11-14 11:05 | 萝卜[匿名] [未注册用户]
可以用server push
实现此功能
这样比较好

  回复  引用    
#86楼 [楼主] 2006-11-14 11:08 | Dflying Chen      
@萝卜[匿名]
什么意思?

  回复  引用  查看    
#87楼  2006-11-28 17:44 | lovelace [未注册用户]
我在用户控件中使用了updatepanel.在页面A.asps中调用没错,在b.aspx页面中调用就出unknown error.有没有什么办法解决
  回复  引用    
#88楼 [楼主] 2006-11-29 21:16 | Dflying Chen      
@lovelace
有没有在服务器端调试过呢?

  回复  引用  查看    
#89楼  2007-04-27 16:14 | 无氧呼吸 [未注册用户]
我刚接触Atlas
请问你所将的
magic ID:abortButton,
在什么地方呀,我在updateProgress的template中没有找到呀

  回复  引用    
#90楼 [楼主] 2007-04-29 21:55 | Dflying Chen      
@无氧呼吸
现在已经不用这个了,其中内容已经过时,呵呵。

  回复  引用  查看    
#91楼  2007-05-10 11:33 | 无氧呼吸 [未注册用户]
那现在都用什么了
能不能给我一点意见.
我刚刚学习Atlas,觉得还是很好用的,至少比Ajax简单的多
公司又不让上网,所以对有些技术的过时都不知道.
请提点宝贵意见,非常感谢!

  回复  引用    
#92楼  2007-07-04 14:31 | 趙曉陽 [未注册用户]
在页面上添加一个ScriptManager对象,并设定属性EnablePartialUpdates=true,,,明明是EnablePartialRendering="true"。。為什么要寫成EnablePartialUpdates=true呢??搞得我找了半天都沒找到。
還有<atlas:ControlValueTrigger ControlID="dropDownList1" PropertyName="SelectedValue" />
5 <atlas:ControlEventTrigger ControlID="button1" EventName="Click" />
。。為什么 我這里找不到啊。。我找到的是
<atlas:AsyncPostBackTrigger ControlID="button1" EventName="Click" />
<atlas:PostBackTrigger ControlID="dropDownList1" />。。為什么都不同啊。。。

  回复  引用    
#93楼 [楼主] 2007-07-04 15:31 | Dflying Chen      
@无氧呼吸
恩,您看看我的最新的一些文章也就基本能够开始使用了:)其实很简单的!

  回复  引用  查看    
#94楼 [楼主] 2007-07-04 15:32 | Dflying Chen      
@趙曉陽
这篇文章中的内容基本上都过时了,呵呵

  回复  引用  查看    
#95楼  2007-07-30 13:19 | leechzhao [未注册用户]
@zhou_heb

想了解一下你的这个翻页控件如何实现的。。。能提供代码看一下么?或者说一下实现方法。

  回复  引用    
#96楼  2007-08-02 10:41 | liaowp [未注册用户]
我在单个页面使用UpdatePanel,更新时字体变大,连UpdatePanel外部的字体也变大!用的是ajax1.1
  回复  引用    
#97楼 [楼主] 2007-08-02 12:02 | Dflying Chen      
@leechzhao
哪个翻页控件啊?

  回复  引用  查看    
#98楼 [楼主] 2007-08-02 12:03 | Dflying Chen      
@liaowp
是不是用CSS的问题呢?

  回复  引用  查看    
#99楼  2007-10-26 22:11 | AK47      
写得真好!
  回复  引用  查看    

发表评论



姓名 [登录] [注册] 
主页
Email (仅博主可见) 
验证码 *  验证码看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论   新用户注册   返回页首      

导航: 网站首页 社区 新闻 博问 闪存 网摘 招聘 .NET频道 知识库 找找看 Google站内搜索



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务

相关文章:

相关链接: