技术开发 频道

在MOSS中使用.Net3.5中的Ajax功能

  二、在MOSS中使用.net3.5中的Ajax功能

  1、修改配置
  这一步和上面一样,将上面的配置加入对应MOSS站点的web.config文件中就可以了

  2、在VS2005中编写Webpart
  这个也是按照常规的方式编写webpart,在这个webpart中使用Ajax中的控件。但是自己的webpart要针对Ajax进行一些特殊处理。我这里参考网上的资料写了一个父类,可以直接从这个父类继承就可以了。

public abstract class AjaxBasePart : System.Web.UI.WebControls.WebParts.WebPart
2{
3    private ScriptManager _AjaxManager;
4
5    public AjaxBasePart()
6    {
7    }
8
9    protected override void OnInit(EventArgs e)
10    {
11        base.OnInit(e);
12
13        //取得存在的ScriptManager
14        _AjaxManager = ScriptManager.GetCurrent(this.Page);
15
16        if (_AjaxManager == null)
17        {
18            //创建ScriptManager
19            _AjaxManager = new ScriptManager();
20            _AjaxManager.ID = this.ID + "$AjaxManager";
21            _AjaxManager.EnablePartialRendering = true;
22
23            if (this.Page.Form != null)
24            {
25                //解决Ajax按钮只能执行一次的问题
26                string formOnSubmitAtt = this.Page.Form.Attributes["onsubmit"];
27                if (!string.IsNullOrEmpty(formOnSubmitAtt) && formOnSubmitAtt == "return _spFormOnSubmitWrapper();")
28                {
29                    this.Page.Form.Attributes["onsubmit"] = "_spFormOnSubmitWrapper();";
30                }
31
32                this.Page.Form.Controls.AddAt(0, _AjaxManager);
33            }
34        }
35    }
36}

  最主要的代码有两处:

  1、14行的地方取得ScriptManager对象,如果没有的话才创建,然后在32行的时候作为form的第一个控件插入。因为一个页面中只能出现一个ScriptManager对象

  2、在26-30之间用来解决UpdatePanel中的按钮只能执行一次的情况。在MOSS中直接使用Ajax的控件时存在一些兼容性方面的问题,需要进行一些特殊处理。如果不加入这段代码,那么在UpdatePanel中出现的按钮只能点击一次,下次再点击的时候没有反应。

0
相关文章