最近,自己写了一个Ajax Web Part
详情请看文档:
Ajax Web Part使用说明
Overview
AjaxWebPart原则上是通过WebPart Manager来操作WebPart,请不要直接调用WebPart中的方法。使用时,引用prototype.js和asyncWebPartPacked.js
WebPart Manager
WebPartManager是一个管理当前页面所有WebPart的类,主要负责控制页面所有WebPart的行为。
构造方法
var manager = new WebPartManager( true , false, "divStyle");参数列表:WebPartManager( 自动加载 , 自动Interval, 默认的div的class属性)
其中,
- 自动加载:页面加载的时候,是否加载WebPart,一般设为true
- 自动Interval:页面加载的时候,是否让有IntervalTime属性的WebPart进行Interval,根据需要设置,一般为false,对于个别要interval的WebPart可以调用manager.stopWebPartInterval('div2')来进行设置。
- 默认的div的class属性:每个WebPart的div class
registerWebPart(webPart)
注册一个WebPart到WebPartManager中。
startAllInterval()
让所有已注册的WebPart开始interval(设定过IntervalTime的WebPart)。
stopAllInterval()
停止所有WebPart的Interval。
startWebPartInterval(divId)
开始特定WebPart的Interval
stopWebPartInterval(divId)
停止特定WebPart的Interval
refreshWebPart(divId)
重新加载指定的WebPart
refreshAllWebPart()
重新加载所有WebPart
makeNewRequest( divId, url, paras, invervalTime , method)
让指定的WebPart发送新的Request
refreshWebPartByElement(elem) [常用]
重新加载当前element所在的WebPart
startWebPartIntervalByElement(elem) [常用]
开始当前element所在的WebPart的Interval
stopWebPartIntervalByElement(elem) [常用]
停止当前element所在的WebPart的Interval
makeNewRequestByElement(elem, url, paras, invervalTime , method)) [常用]
让当前element所在的WebPart发送新的Request
refreshWebPartByElementId(elemId) [常用]
重新加载id为elemId的Element所在的WebPart
startWebPartIntervalByElementId(elemId) [常用]
开始id为elemId的Element所在的WebPart的Interval
stopWebPartIntervalByElementId(elemId) [常用]
停止id为elemId的Element所在的WebPart的Interval
makeNewRequestByElementId(elemId, url, paras, invervalTime , method)) [常用]
让id为elemId的Element所在的WebPart发送新的Request
WebPart
使用一个WebPart,首先,创建WebPart实例:
var webPart1 = new WebPart("div1", "GetWebPartJS.aspx", "&WebPartID=1&customPara=hi", false, "<img src='images/indicator.gif' />",1000, "get");
参数列表:var webPart1 = new WebPart(Div的Id, 目标URL, 参数, 是否Load完毕以后执行WebPart内容中的Javascirpt, Loading时候显示的内容, 自动刷新的时间, Method);
其中,
- 目标URL:一般都是GetWebPartJS.aspx页面。当然也可以是其他页面,如果需要的话。
- 参数:不用带HtmlContainer,因为已经在程序里处理过了。
- 是否Load完毕以后执行WebPart内容中的Javascirpt:比如,WebPart中有一段<script>alert("i'm from webpart.");</script>,如果为true,则当WebPart Load完毕之后,自动执行,为false,则不执行。
- Loading时候显示的内容:可以是一段Html,在请求发出到请求响应成功时显示。
- 自动刷新的时间:WebPart每隔x毫秒自动刷新
- Method:Get或者Post方法(默认Get)
然后,注册到WebPartManager中:
manager.registerWebPart(webPart1);
Sample
创建并注册WebPart
var webPart1 = new WebPart("div1", "GetWebPartJS.aspx", "&WebPartID=1&customPara=hi", false, "<mg src='images/indicator.gif' />",null, "get");
var manager = new WebPartManager( true , false, "divStyle");
manager.registerWebPart(webPart1);
创建并注册一个Interval的WebPart
var webPart1 = new WebPart("div1","GetWebPartJS.aspx","&WebPartID=1&customPara=hi", false, "<mg src='images/indicator.gif' />",1000, "get");
var manager = new WebPartManager( true , false, "divStyle");
manager.registerWebPart(webPart1);
manager.startWebPartInterval('div1');
在WebPart中实现让自己刷新
在WebPart中,可以用一个Dom Element作为参数,用manager对Dom Element所在的div进行操作
然后在前台代码里调用manager对象(这个对象已经在WebPart所应用的页面实例化了):
<input type=button value="click me! then i'll reload this webPart myself." onclick="manager.refreshWebPartByElement(this);" ID="Button1" NAME="Button1"/>
在WebPart中实现让自己请求另外一个页面:
基本步骤同上,只是调用一下manager的makeNewRequestByElement( elem, url, paras, invervalTime , method)方法。
<input type=button
value="click me! then i'll make a new request to.TestPage2Remote.aspx." onclick= "manager.makeNewRequestByElement(this,'GetWebPartJS.aspx','&WebPartID=2&customPara=hi',null, null);" ID="Button1" NAME="Button1"/>
让包含特定id的element所在WebPart请求另外一个页面:
基本步骤同上,只是调用一下manager的makeNewRequestByElementId( elem, url, paras, invervalTime , method)方法。
<input type=buttonSample页面
value="click me! then i'll make a new request to.TestPage2Remote.aspx." onclick= "manager.makeNewRequestByElementId('someElementId','GetWebPartJS.aspx','&WebPartID=2&customPara=hi',null, null);" ID="Button1" NAME="Button1"/>