摘要:这里的表单指的是列表默认的新建界面和编辑界面,在点击“确定”之后实际上是可以触发一段我们自定义的代码的,比如跳转页面、做一些其他操作等事情。(虽然跳转页面可以通过url中的Source来做,但是我们往往需要跳转时url加上当前列表条目的ID,不过新建页面中是拿不到条目ID的……) 添加表单事件的方法很容易,不过没有见到网上有任何文章说这件事 -.- 在SPFormContext中使用OnSaveHandler属性就可以挂载一个EventHandler了,所以我们可以在表单页面中加入如下代码(通过WebPart或者自定义字段): 1 protected override void OnInit(EventArgs e)
2 {
3 base.OnInit(e);
4 // add save handler
5 if (SPContext.Current.FormContext.FormMode == SPControlMode.New)
6 SPContext.Current.FormContext.OnSaveHandler += new EventHandler(MyHandler);
7 }
通过Reflector,我们可以看到保存列表条目的那个确定按钮“SaveButton”在保存时所做的操作,如果当前表单中有SaveHandler的话,则不会自动保存该条目。换句话说,我们需要在代码里面自动做这件事,不过也很容易,利用SaveButton的静态方法SaveItem:
1 protected void MyHandler(object sender, EventArgs e)
2 {
3 string checkInComment = Page.Request.QueryString["CheckInComment"];
4 if (checkInComment == null) checkInComment = "";
5 SaveButton.SaveItem(SPContext.Current, false, checkInComment);
6
......[
阅读全文]