Create a AJAX enabled WebPart for SharePoint2007 by using ASP.NET 2.0 client callback feature
I tried to integrate Atlas into WebPart a couple of days ago but failed. Atlas is a great AJAX framework from Microsoft, but it isn't compatible with SharePoint 2007 for now, what a pity.
But your customers always have this kind of complain, "The page will fully reload when I just click one button in the WebPart, I just wanna perform a very simple action but I have to wait until the page load complete." So, how can you handle this?
As you've known, there is a built-in feature called client callback in ASP.NET 2.0, which allows you call server method from client side without causing the page refresh, and SharePoint2007 is built upon ASP.NET 2.0 framework, so we can use this feature to support AJAX in WebPart.
In the following steps, I'm gonna show you how to get server date from client in a WebPart.
[If you are not familiar with Client Callback feature in ASP.NET 2.0 yet, I strongly recommend you read this article first]
1. Start up VS.NET 2005 and create a Class Library project.
2. Add System.Web.dll to the project reference.
3. Create a Class with a name you expect, which inherit from System.Web.UI.WebControls.WebParts.WebPart and implement System.Web.UI.ICallbackEventHandler interface.
4. Override CreateChildControls to create some controls.
5. Override OnLoad to regist related JavaScript to client.
6. Override RenderContents or Render to render WebPart to browser.
7. Implement ICallbackEventHandler members.
The source code is here:
using System;
using System.Text;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls.WebParts;

namespace SPS2007.Research.WebParts


{
public class AjaxPart : WebPart, ICallbackEventHandler

{
private string strCallResult;
private HtmlInputText tbResult;
private HtmlButton btnCall;

public AjaxPart()

{
}

protected override void CreateChildControls()

{
base.CreateChildControls();

tbResult = new HtmlInputText();
tbResult.ID = "myTextBox";
btnCall = new HtmlButton();
btnCall.InnerText = "GetServerDate";
btnCall.Attributes.Add("OnClick", "javascript:InvokeMethod();");
this.Controls.Add(tbResult);
this.Controls.Add(btnCall);
}

protected override void OnLoad(EventArgs e)

{
if ((this.Page != null) && !this.Page.IsCallback)

{
ClientScriptManager scriptManager = this.Page.ClientScript;

string eventRef = scriptManager.GetCallbackEventReference(this, "argVal", "OnCallComplete", "ctxVal", "OnErrorOccurs", true);

StringBuilder sb = new StringBuilder();

sb.Append("function InvokeMethod(argVal,ctxVal)");
sb.Append(Environment.NewLine);
sb.Append("{");
sb.Append(Environment.NewLine);
sb.Append(eventRef);
sb.Append(Environment.NewLine);
sb.Append("}");
sb.Append(Environment.NewLine);

HtmlInputText textBox = this.FindControl("myTextBox") as HtmlInputText;

sb.Append("function OnCallComplete(result,context)");
sb.Append(Environment.NewLine);
sb.Append("{");
sb.Append(Environment.NewLine);
sb.Append("document.getElementById(\"" + textBox.ClientID + "\").value = result;");
sb.Append(Environment.NewLine);
sb.Append("}");
sb.Append(Environment.NewLine);

sb.Append("function OnErrorOccurs(err)");
sb.Append(Environment.NewLine);
sb.Append("{");
sb.Append(Environment.NewLine);
sb.Append("window.status = err;");
sb.Append(Environment.NewLine);
sb.Append("}");
sb.Append(Environment.NewLine);

scriptManager.RegisterClientScriptBlock(base.GetType(), "CallBackScript", sb.ToString(), true);
base.OnLoad(e);
}
}

protected override void RenderContents(HtmlTextWriter writer)

{
EnsureChildControls();
tbResult.RenderControl(writer);
btnCall.RenderControl(writer);
}

protected string GetDateTime()

{
return DateTime.Now.ToString("MM/dd/yyyy");
}


Implement ICallbackEventHandler Members#region Implement ICallbackEventHandler Members

public string GetCallbackResult()

{
return strCallResult;
}

public void RaiseCallbackEvent(string eventArgument)

{
strCallResult = GetDateTime();
}

#endregion
}
}

Okay, That's it, you can compile the project and deploy your WebPart to sharepoint site. I will give you the instructions about how to deploy a web part if you don't know that.
1. Copy compiled assembly to C:\Inetpub\wwwroot\wss\VirtualDirectories\80\_app_bin, notice that 80 is the virtual directory related to your wss site, you can find the name from IIS MMC.
2. Modify the web.config file under C:\Inetpub\wwwroot\wss\VirtualDirectories\80 directory, add below line to SafeControls section:
<SafeControl Assembly="SPS2007.Research.WebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Namespace="SPS2007.Research.WebParts" TypeName="*" />
You probably need to change Assembly and Namespace to accord with your assembly.
3. Execute IISRESET under command line.
4. Then go to Site Settings -> Web parts, click 【New】go to the New Web Parts page, find your web part, click 【Populate Gallery】, after that you can add your web part to a page when you edit a page.
原文:http://fengzhimei.cnblogs.com/archive/2006/05/26/410032.html
分享到:
相关推荐
ASP.NET 2.0 WebParts 是微软开发框架中一个强大的特性,它允许用户自定义和交互式地构建动态网页内容。WebParts 提供了一个可扩展的框架,用于创建高度个性化和交互式的Web应用程序,尤其适合企业级应用和门户站点...
尽管ASP.NET 2.0本身并不包含完整的AJAX框架,但微软通过Atlas(后来发展为ASP.NET AJAX)扩展了对部分AJAX功能的支持,使开发者可以创建部分页面刷新的应用,提高用户体验。 八、WebParts WebParts是ASP.NET 2.0中...
Asp.NET 2.0通过AJAX技术实现了Partial Postback,提高了用户体验,减少了不必要的页面刷新。 10. **WebParts**:WebParts允许用户在运行时自定义和交互网页内容。用户可以添加、删除、移动、配置WebPart控件,增强...
ASP.NET 2.0+SQL Server 2005全程指南 目录 基础篇 第1章 ASP.NET概述及环境配置 1.1 认识ASRNET 1.1.1 .NET Framework框架 1.1.2 ASP.NET功能与特性 1.1.3 ASP.NET与ASP的区别 1.2 搭建ASP.NET开发环境 1.2.1...
ASP.NET 2.0是微软推出的用于构建动态网站和Web应用程序的框架,它极大地简化了Web开发过程。在这一部分的教程中,我们将专注于ASP.NET 2.0的Web Part功能,这是一种强大的组件化开发技术,它允许用户自定义和交互...
7. **AJAX支持**:虽然ASP.NET 2.0本身并未内置Ajax支持,但Microsoft推出了一个名为Atlas的预览版,它是后来ASP.NET AJAX的基础,允许开发者创建部分页面刷新的应用程序,提高了用户体验。 8. **配置管理工具**:...
【在ASP.NET 2.0中使用WebParts】 ASP.NET 2.0引入了一项强大的功能,即WebParts,它允许用户自定义和交互网页内容。WebParts为开发者提供了构建高度可配置和交互式Web应用程序的框架。在这个系统中,用户可以动态...
- **并行安装问题**:在 .NET 3.5 Beta2 发布之前,存在一个并行安装 ASP.NET AJAX 的问题,该问题会导致已有的 ASP.NET AJAX 1.0 和 VS2005 构建的 ASP.NET 2.0 项目自动加载 .NET 3.5 的 AJAX 组件。 - **修复方法...
8. **AJAX支持**: 虽然ASP.NET 2.0本身并不直接包含Ajax功能,但通过Microsoft的Atlas框架(后来发展为ASP.NET AJAX),开发者能够实现部分页面刷新和异步通信,提升用户体验。 9. **WebParts**: WebParts是ASP.NET...
SharePoint AJAX WebPart是开发SharePoint应用程序时常用的一种技术,它允许用户在不刷新整个页面的情况下更新部分网页内容,提供更流畅的用户体验。这个自定义的SharePoint.Ajax.Library是为了解决SharePoint内置...
ASP.NET MVC框架下的Webpart/Portlet插件开发是一种构建动态、可定制Web界面的方法。Webparts(或Portlets)是独立的、可重用的组件,它们可以被用户根据个人喜好在页面上自由排列和配置。在ASP.NET MVC中实现这一...
ASP.NET中的WebPart技术是构建动态、可交互的网页用户界面的一种强大工具,它允许开发者将复杂的网页功能拆分成独立的、可重用的部件,这些部件称为WebPart。本例程提供了对WebPart的基本操作,包括关闭和重新打开...
ASP.NET与AJAX深度剖析范例集 的随书代码 书的目录如下: 目录 第1章 构建自己的网站 第2章 Visual Studio 2005的重要改变 第3章 ASP.NET 2.0新功能剖析 第4章 数据库访问机制的重大变革 第5章...
SharePoint WebPart是微软 SharePoint 平台上的一个重要组成部分,它允许开发者创建可重用的、交互式的用户界面组件,以增强 SharePoint 网站的功能。WebPart 的自定义开发是 SharePoint 开发中的核心技能,可以帮助...
**用户控件包装器**是一种辅助 SharePoint 开发者的工具,它能显著简化将 ASP.NET 用户控件转换为可在 SharePoint Portal Server 2003 或 Windows SharePoint Services 2.0 中使用的 WebPart 的过程。通过这种方式,...
ASP.NET 2005 WebPart 是微软在.NET Framework 2.0版本中引入的一个强大功能,用于构建高度可定制和交互式的Web应用程序。WebPart技术允许开发者将网站的各个功能模块化,使得用户可以根据自己的需求自由组合和配置...
ASP.NET绝对居中弹出层是一种常见的Web应用交互设计,常用于显示重要的信息或进行用户交互,如登录对话框、消息提示或表单提交。在ASP.NET框架中,结合JavaScript和CSS,我们可以创建一个高性能、高用户体验的弹出...
ASP.NET2.0的安全性是构建可靠Web应用的基础。它包括身份验证(Authentication)和授权(Authorization)两部分。身份验证确保只有合法用户可以访问应用,常见的方法有Windows、Forms、Passport等。授权则控制不同...