自定义SharePoint列表新增、编辑、查看页面(NewForm、EditForm、DispForm)
转:http://blog.csdn.net/lance_lot1/article/details/7966571
在项目中,用户需求涉及在一个列表录入项目信息,选择一个项目后,与该项目相关的信息实现自动填写,这个需求在SharePoint列表里,我们只能通过重新定制SharePoint列表的新建、编辑页面来实现。
SharePoint的新建(NewForm.aspx)、编辑(EditForm.aspx)、查看(DispForm.aspx)页面都是存在数据库中,每个页面中都部署了一个SharePoint自己的ListFormWebPart,如下图:
上图是使用SharePointDesigner打开列表编辑页面的效果,由于在SharePoint网站中,列表的新建、编辑、查看页是没有“编辑页面”的选项,所以使用Designer来编辑页面,并可以向页面添加自己的WebPart用来实现数据的输入、保存等。
接下来开始定制新建页面:
1、 首先使用designer打开列表的NewForm.aspx页面,如下图:
2、 接着插入一个自己定义的TemplateWebPart(此WebPart用来载入用户控件ascx页面),如下图:
接着配置TemplateWebPart的UserControl路径,例如:/_layouts/MyPages/NewPage.ascx
3、 现在再次打开列表的新建页面就可以看到下图的效果
4、 接下来要做的就是把SharePoint自己的新建页面给隐藏起来,使用我们自己定义的WebPart来进行数据的录入,这样新建页面就能自己说了算了。
隐藏SharePoint自己的ListFormWebPart有两种方式:
1) 在Designer中双击ListFormWebPart,选中其“布局”属性中的“隐藏”选项。
这种方法有个缺陷,就是无法使用SharePoint自己的“附加文件”来上传附件。应为虽然是将ListFormWebPart隐藏不显示,但实际它的代码在IE浏览时还是会存在网页中。这时候点击“附加文件”链接,它的脚本就会出现错误。如果你的新建页面不用上传附件的话,这种方式还是比较方便省事的。
2) 重新定义一个空的SharePoint:RenderingTemplate,打开12"template"controltemplates"DefaultTemplates.ascx文件,在文件最后加入如下代码:
<SharePoint:RenderingTemplate ID="CustomerListForm" runat="server">
<Template>
</Template>
</SharePoint:RenderingTemplate>
用Designer打开新建页面,切换到代码视图,编辑ListFormWebPart的TemplateName属性,将TemplateName的值设置成自定义的模板“CustomerListForm”如下图:
保存后,实际现在新建页面的ListFormWebPart就是个摆设了,里面没有任何内容,有人会觉得那就把它删了就行了,我开始也是这么想的直接删了,结果在列表点击“新建”链接时,页面弹出新建页面链接无效,无法进入新建页面了。所以只能采取所谓“隐藏”的方法来做了,如果有其他方法还请大家帮忙指出,小弟在此先谢过了:)。
最后自定义列表新建页面就跟做.net页面一样了,想怎么弄都行了。编辑、查看的页面基本和这个相同。
TemplateWebPart代码:
1
using System;
2
using System.Collections.Generic;
3
using System.Web;
4
using System.Web.UI;
5
using System.ComponentModel;
6
using System.Web.UI.HtmlControls;
7
using System.Web.UI.WebControls;
8
using System.Web.UI.WebControls.WebParts;
9
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using System.Xml.Serialization;

namespace ITSCustomMgr.WebParts
{
[XmlRoot(Namespace = "ITSCustomMgr.WebParts")]
public class TemplateWebPart : System.Web.UI.WebControls.WebParts.WebPart
{
private const string defaultText = "";
private string _userControl;
private UserControl _control;
private LiteralControl _child;

[WebBrowsable, Category("用户控件包装器设置"),
DefaultValue(defaultText),
Personalizable(),
FriendlyName("用户控件路径"), Description("请输入用户控件路径 (.ascx)")]
public string UserControl
{
get { return _userControl; }
set { _userControl = value; }
}

protected internal void LoadUserControl()
{
if (!string.IsNullOrEmpty(this._userControl))
{
this._control = (UserControl)Page.LoadControl(this._userControl);
this.Controls.Add(this._control);
}
else
{
, this.ID));
this.Controls.Add(this._child);
}
}

protected override void CreateChildControls()
{
base.CreateChildControls();
this.Controls.Clear();
try
{
LoadUserControl();
}
catch (System.Exception ex)
{
this._child = new LiteralControl(string.Format("<b>错误:</b> 不能载入 {0}<br /><b>详细信息:</b> {1}", _userControl, ex.Message));
this.Controls.Add(this._child);
}
}

protected override void Render(HtmlTextWriter writer)
{
EnsureChildControls();
if (_control != null)
{
_control.RenderControl(writer);
}
else
{
_child.RenderControl(writer);
}
}
}
}
基本上自定义SharePoint列表新建页面就先介绍到这,过几天再来补充如何在新建、编辑页面中使用SharePoint的AttachmentUpload来实现上传附件。
自定义SharePoint列表新增、编辑、查看页面(NewForm、EditForm、DispForm)的更多相关文章
- Editable DataGrid 实现列表新增编辑功能
今天在开发一个功能时候,需要直接在列表实现新增.编辑等功能.于是查看easyui 相关文档,找到相关解决办法. easyui的datagrid支持可编辑功能.它使用户能够向数据网格中添加一个新行.用户 ...
- 自定义Sharepoint的登陆页面
转:http://www.cnblogs.com/jecoso/archive/2008/05/25/1207151.html 原文作者:Damon Armstrong 原文地址:http://www ...
- 通过SPList Definition自定义ListItem打开编辑详细页面
在SharePoint中对列表SPList的操作里,常常希望当增加一个条目后还希望关联做一些其它的操作 而SharePoint自身提供的Item操作页面却没有那么灵活:所以通常情况下,我们专门为其提供 ...
- SharePoint 列表中增加列编辑功能菜单
需求描述 在企业的部署中,经常将SharePoint和TFS集成在一起,两个系统之间相互读取数据,展现开发进度.在TFS 2018之前版本中,由于TFS的门户定制功能有限,用户比较喜欢使用ShareP ...
- RookeyFrame Bug 表单管理 -> 查看表单 ->编辑字段页面 JS报错
表单管理 -> 查看表单 ->编辑字段页面 小bug onchange里面直接就是方法,修改:去掉外面的function(){},直接把方法体写在onchange里面就可以了. 后台方法: ...
- Sharepoint 列表
1.将SharePoint 2010列表数据使用Access打开 在SharePoint 2010新增加了对列表在Access客户端的打开,可以在Microsoft Access 中处理列表中的项目, ...
- 限制用户不能删除SharePoint列表中的条目(项目)
概述 SharePoint列表提供了一个用于在线协作的电子表格,不同的用户可以同时在不同的地方编辑一套数据. 列表功能在收集用户信息.提供审批流程方面为办公人员提供了非常便捷的好处. 既然是协作办公, ...
- 在Sharepoint2010中一种自定义调查列表的不允许再次答复提示的处理方法!
在Sharepoint中默认创建的调查列表系统只允许答复一次,再次答复将报错误信息,这对最终用户而言是非常不友好的体验,当然你也可以在调查设置中的常规设置中设置允许多次答复,这样就会有错误提示信息,但 ...
- SharePoint列表模板(.stp)
背景:在sharepoint中,我们经常使用SharePoint Designer定制列表的新建.编辑.查看页面,当我们在开发环境定制好了的时候,怎么才能将定制的列表移到正式环境. 实现 ...
随机推荐
- win系统一键安装JDK和Tuxedo
@echo off title JDK和tuxedo环境变量设置 color 0a set /p inputTUX= [请输入你要设置的tuxedo的安装目录:] if /i "%input ...
- 查看某一个点是否在某个多边形内 使用ST_Contains函数
查看某一个点是否在某个多边形内 使用ST_Contains函数 --LINESTRING ( 121.312350 30.971457 , 121.156783 31.092221 , 121.35 ...
- 制作下拉菜单(PopupList)
怎样判断是否应当使用下拉菜单 下拉菜单,就是将一系列的选项隐藏,通过单击某一个控件将会弹出一个包含这些选项的列表,在其中选择想要的选项.这样做不但可以节省屏幕空间,也可以让用户在进行选择时更加方便快捷 ...
- touches获得手指点击的坐标
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObjec ...
- .net google calendar
https://developers.google.com/gdata/client-cs http://www.codeproject.com/Articles/64474/How-to-Read- ...
- hadoop 任务执行优化
任务执行优化 1. 推测式执行: 如果jobtracker 发现有拖后的任务,会再启动一个相同的备份任务,然后哪个先执行完就会去kill掉另一个,因此会在监控页面上经常能看到正常执行完的作业会有被ki ...
- uva 108
降维 枚举行累加 然后求单行上最大连续和 #include <iostream> #include <cstring> #include <cstdio> # ...
- 用MT.exe将exe中的manifest文件提取出来和将manifest文件放入exe中
前一种方法是将manifest文件放入exe中,但是要记得需要在工程中设置 这样的话exe中就不存在manifest了,在debug目录下就会看到相应的manifest文件.后者是将exe中的man ...
- CodeForces 300A Array
http://codeforces.com/problemset/problem/300/A 题意 :给你n个数字,让你分成3组,第一组各个数之积要小于0,第二组要大于0,第三组要等于0,符合要求的答 ...
- mysql 查询重复值命令
积累备忘啊: ; 从t_maintenanceinfo表查询重复记录的mtiId 和ip字段,以及重复条数