溶入海洋中的雨滴
将自己溶入大海,化作一阵清风

第一种是    .UpdaterPanel

首先ScriptManager中要设置EnablePartialRendering="true" 来开启局部更新功能,

同时在UpdaterPanel中设置属性UpdateMode="Conditional/Always",

如选择是 Conditional 的话,还需UpdaterPanel按设置如下

<Triggers>

        <asp:AsyncPostBackTrigger ControlID="Button3" EventName="Click" />

 </Triggers>

ps:触发条件有2种,由事件或值来触发,按值来触发尚未在1.0.6版中发现,

触发的控件必须是服务器控件,该控件可在<ContentTemple>里,也可在UpdaterPanel外。

 

第二中是人为强制不postback

<asp:Button  id="Button4" Text="采用HttpPost方法"   OnClientClick="useHttpPost();return false;"   runat="server" />如粗体部分所示,人为强制不postback,


比较

采用UpdaterPanel可以不用做重复功给$get(ElementId)赋值,代码简练得多。只要把一同更新的放进一个UpdaterPanel里就可以了。

Tips:采用OnClientClick还是Click方法,(a).取决于你习惯在客户端调用Web Service方法,还是在服务器端调用了。服务器端应该神秘点吧,但如传入的数据需要处理的话,在服务器端先进行一般处理也是个值得考虑的方法。

(b) Click方法,要Trigger配合,同时有个很大的限制,就是它只能刷新UpdaterPanel里的,不能刷新外面的;但OnClientClick却是里外都行。

============================================================================================

完整示例:

客户端js部分:

var num=0;

//局部刷新

function divIn()

{ num++;

 WebService.HelloWorld(num,disDivIn); 

}

function disDivIn(result)

  $get("divIn").innerHTML =result;

}

//页面加载时局部刷新

 window.onload=function()

{

  alert('pageOnLoad()');

  divIn ();

}

 

客户端表现层部分:

<asp:ScriptManager ID="ScriptManager1" runat="server"   EnablePartialRendering="true" >

       

        <Services>

         <asp:ServiceReference InlineScript="true" Path="WebService.asmx"  />

        </Services>      

        </asp:ScriptManager>

      

      <asp:Button  id="Button3" Text="Server局部刷新"   runat="server"  OnClick="Button3_Click"  />

    <asp:Button  id="Button4" Text="Browser局部刷新"   runat="server"  On ClientClick="divIn();return false;"  />

 

        <asp:UpdatePanel ID="UpdatePanel1" runat="server"  UpdateMode="Conditional"  RenderMode="Block">

            <ContentTemplate>

             <div id="divIn" runat="server"></div> 

      

            </ContentTemplate>

           <Triggers>

             <asp:AsyncPostBackTrigger ControlID="Button3" EventName="Click" />

            </Triggers> 

        </asp:UpdatePanel>

 

Web Service部分

using System.Web.Script.Services;

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[ScriptService]

public class WebService : System.Web.Services.WebService {

    public WebService () {            

    }

    [WebMethod ]

    [ScriptMethod]

    public string HelloWorld(int i)

    {// System.Threading.Thread.Sleep(9000);

        StringBuilder str = new StringBuilder();

        for (int n = 0; n < i; n++)

        {

            str.Append("Hello World<br/>");              

        }

            return str.ToString();

    }

   }

橙色部分是决定Web Server中方法能否为客户端调用的关键,要自己手动添加

 

 

 

CS部分

 

protected void Button3_Click(object sender, EventArgs e)

    {

 

        divIn.InnerHtml = divIn.InnerHtml + "the data is from server" + "<br/>";

    }   

posted on 2007-09-10 17:41  溶入海洋中的雨滴  阅读(291)  评论(0编辑  收藏  举报