自定义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定制列表的新建.编辑.查看页面,当我们在开发环境定制好了的时候,怎么才能将定制的列表移到正式环境. 实现 ...
随机推荐
- javascript看你能够做对几题
http://ourjs.com/detail/52fb82e13bd19c4814000001
- 十一、mysql输入安全
.尽量使用“绑定参数”功能,php中可用pdo进行一系列操作 .php可使用mysql_real_escape_string()函数进行输入过滤:
- SecureCRT上传bash: rz: command not found(转载)
转载自:http://blog.csdn.net/zhangdaiscott/article/details/18141017 -bash: rz: command not found rz命令没找到 ...
- Code for the Homework1
作业要求: http://www.cnblogs.com/bingc/p/4919692.html 代码(未使用Eigen): #include <iostream> #include & ...
- linux驱动系列之makefile
在linux环境下做嵌入式无论是编写应用程序还是驱动程序等等,都需要用make来进行程序的编译,就需要学会自己编写Makefile.Makefile主要的作用有3点:1.决定编译哪些文件 2.怎样编译 ...
- HTTP verb的安全性和幂等性
Http协议规定了不同方法的安全特性和幂等特性,作为服务提供者的服务器必需为客户端提供这些特性. 安全性,仅指该方法的多次调用不会产生副作用,不涉及传统意义上的“安全”,这里的副作用是指资源状态.即, ...
- BZOJ 1593: [Usaco2008 Feb]Hotel 旅馆
Description 奶牛们最近的旅游计划,是到苏必利尔湖畔,享受那里的湖光山色,以及明媚的阳光.作为整个旅游的策划者和负责人,贝茜选择在湖边的一家著名的旅馆住宿.这个巨大的旅馆一共有N (1 &l ...
- onClick(View) of type new View.OnClickListener(){} must override a superclass method
原地址:http://blog.csdn.net/aeolus1019/article/details/8014798 Android开发过程中代码错误报错如下: - implements andro ...
- Docker 监控实战
如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据: 2 / 3 的公司在尝试了 Docker 后最终使用了它 也就是说 Docker 的转化率达到了 67%,而转化市场也控制在 ...
- CF 136A Presents
http://codeforces.com/problemset/problem/136/A 题意 :就是输入很多数字,第 i 个数字 pi 代表着第 i 个人的礼物给了第 pi 个人,而让你输出的数 ...