MOSS AJAX WebParts开发环境设置
置顶:MOSS SP1开始支持AJAX。首先确认你的MOSS版本号 想必开发过MOSS AJAX控件的都知道,为了实现AJAX,必须对MOSS的环境进行大量的设置。网上有大量此类的文章,其中最流行的做法应该是刊登在moss开发团队blog上的(点击下面的URL进入)。 (http://blogs.msdn.com/sharepoint/archive/2007/03/02/integrating-asp-net-ajax-with-sharepoint.aspx) 简单概括一下步骤的话: 1. 下载并安装ASP.NET AJAX( http://www.asp.net/ajax/) 2. 扩展web.config使其支持ASP.NET AJAX 3. 在master pager上添加ASP.NET AJAX Script Manager 算得上是官方推荐的做法吧,只是有点麻烦,好在对MOSS进行AJAX扩展的人越来越多,网上出现了很多简便的做法,下面是鄙人的心得 1. 下载并安装ASP.NET AJAX 2. 下载并安装stsadm.ajaxifymoss自动配置web.config 3. Webparts的OnInit事件里添加ASP.NET AJAX Script Manager 接下来对各个步骤进行介绍 1 下载并安装ASP.NET AJAX( http://www.asp.net/ajax/) 推荐安装ASP.NET AJAX Extensions 1.0版本。 2 下载并安装stsadm.ajaxifymoss自动配置web.config 2.1 下载StsAdm.AjaxifyMoss.zip并解压,执行deploy.cmd后执行upgrade.cmd(StsAdm.AjaxifyMoss.zip必须在同一个文件夹内) 2.2 启动dos命令栏窗口(cmd),使用stsadm运行ajaxifying(默认在C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12BIN)
3 Webparts的OnInit事件里添加ASP.NET AJAX Script Manager(参考示例代码) 4 运行示例代码(不要忘记添加System.Web.Extensions) using System; using System.Collections; using System.Text; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI; using System.Runtime.InteropServices; using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls; using Microsoft.SharePoint.WebPartPages; namespace UsesUpdatePanel { [Guid("4e393abc-cc9c-4182-8d32-a742f6ace07b")] public class AjaxUpdatePanelPart : System.Web.UI.WebControls.WebParts.WebPart { private Label label; private TextBox textBox; private UpdatePanel up; private Button button; private ScriptManager _AjaxManager; //自定义一个ScriptManager用来存储获取的ScriptManager [WebPartStorage(Storage.None)] public ScriptManager AjaxManager { get { return _AjaxManager; } set { _AjaxManager = value; } }
//页面初始化事件 protected override void OnInit(EventArgs e) { base.OnInit(e); //获取页面上的ScriptManager _AjaxManager = ScriptManager.GetCurrent(this.Page); //如果页面上没有ScriptManager时追加一个 if (_AjaxManager == null) { _AjaxManager = new ScriptManager(); _AjaxManager.EnablePartialRendering = true; Page.ClientScript.RegisterStartupScript( typeof(AjaxUpdatePanelPart), this.ID, "_spOriginalFormAction = document.forms[0].action;", true);
if (this.Page.Form != null) { string formOnSubmitAtt = this.Page.Form.Attributes["onsubmit"]; if (!string.IsNullOrEmpty(formOnSubmitAtt) && formOnSubmitAtt == "return _spFormOnSubmitWrapper();") { this.Page.Form.Attributes["onsubmit"] = "_spFormOnSubmitWrapper();"; } this.Page.Form.Controls.AddAt(0,_AjaxManager); } } } //创建各个控件,并填充UpdatePanel protected override void CreateChildControls() { base.CreateChildControls(); this.EnsureUpdatePanelFixups(); up = new UpdatePanel(); up.ID = "UpdatePanel1"; up.ChildrenAsTriggers = true; up.RenderMode = UpdatePanelRenderMode.Inline; up.UpdateMode = UpdatePanelUpdateMode.Always; this.textBox = new TextBox(); this.textBox.ID = "TextBox"; up.ContentTemplateContainer.Controls.Add(this.textBox); this.label = new Label(); this.label.Text = "Enter your name."; up.ContentTemplateContainer.Controls.Add(this.label); this.button = new Button(); button.CausesValidation = false; button.ID = "Button1"; button.Text = "Say Hello"; button.Click += new EventHandler(HandleButtonClick); up.ContentTemplateContainer.Controls.Add(this.button); _AjaxManager.RegisterAsyncPostBackControl(this.button); this.Controls.Add(up); } private void HandleButtonClick(object sender, EventArgs eventArgs) { this.label.Text = "Hello " + this.textBox.Text; } /*在MOSS中,为了正确解析某些特殊的URLs,例如包含汉字等两比特字符的URL, * Windows SharePoint Services JavaScript使用form onSubmit wrapper重载默认的form action, * 下面这个方法用来恢复默认的form action,如果你的URL里不包含汉字等双字节的字符, * 那么,恭喜,你可以使用ASP.NET AJAX UpdatePanels * (具体请参考上文中提到的「moss开发团队blog」) */ private void EnsureUpdatePanelFixups() { if (this.Page.Form != null) { string formOnSubmitAtt = this.Page.Form.Attributes["onsubmit"]; if (formOnSubmitAtt == "return _spFormOnSubmitWrapper();") { this.Page.Form.Attributes["onsubmit"] = "_spFormOnSubmitWrapper();"; } } ScriptManager.RegisterStartupScript( this, typeof(AjaxUpdatePanelPart), "UpdatePanelFixup", "_spOriginalFormAction = document.forms[0].action; _spSuppressFormOnSubmitWrapper=true;", true); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |