转: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代码:

1using System;

 2using System.Collections.Generic;

 3using System.Web;

 4using System.Web.UI;

 5using System.ComponentModel;

 6using System.Web.UI.HtmlControls;

 7using System.Web.UI.WebControls;

 8using System.Web.UI.WebControls.WebParts;

 9using 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)的更多相关文章

  1. Editable DataGrid 实现列表新增编辑功能

    今天在开发一个功能时候,需要直接在列表实现新增.编辑等功能.于是查看easyui 相关文档,找到相关解决办法. easyui的datagrid支持可编辑功能.它使用户能够向数据网格中添加一个新行.用户 ...

  2. 自定义Sharepoint的登陆页面

    转:http://www.cnblogs.com/jecoso/archive/2008/05/25/1207151.html 原文作者:Damon Armstrong 原文地址:http://www ...

  3. 通过SPList Definition自定义ListItem打开编辑详细页面

    在SharePoint中对列表SPList的操作里,常常希望当增加一个条目后还希望关联做一些其它的操作 而SharePoint自身提供的Item操作页面却没有那么灵活:所以通常情况下,我们专门为其提供 ...

  4. SharePoint 列表中增加列编辑功能菜单

    需求描述 在企业的部署中,经常将SharePoint和TFS集成在一起,两个系统之间相互读取数据,展现开发进度.在TFS 2018之前版本中,由于TFS的门户定制功能有限,用户比较喜欢使用ShareP ...

  5. RookeyFrame Bug 表单管理 -> 查看表单 ->编辑字段页面 JS报错

    表单管理 -> 查看表单 ->编辑字段页面 小bug onchange里面直接就是方法,修改:去掉外面的function(){},直接把方法体写在onchange里面就可以了. 后台方法: ...

  6. Sharepoint 列表

    1.将SharePoint 2010列表数据使用Access打开 在SharePoint 2010新增加了对列表在Access客户端的打开,可以在Microsoft Access 中处理列表中的项目, ...

  7. 限制用户不能删除SharePoint列表中的条目(项目)

    概述 SharePoint列表提供了一个用于在线协作的电子表格,不同的用户可以同时在不同的地方编辑一套数据. 列表功能在收集用户信息.提供审批流程方面为办公人员提供了非常便捷的好处. 既然是协作办公, ...

  8. 在Sharepoint2010中一种自定义调查列表的不允许再次答复提示的处理方法!

    在Sharepoint中默认创建的调查列表系统只允许答复一次,再次答复将报错误信息,这对最终用户而言是非常不友好的体验,当然你也可以在调查设置中的常规设置中设置允许多次答复,这样就会有错误提示信息,但 ...

  9. SharePoint列表模板(.stp)

    背景:在sharepoint中,我们经常使用SharePoint Designer定制列表的新建.编辑.查看页面,当我们在开发环境定制好了的时候,怎么才能将定制的列表移到正式环境.        实现 ...

随机推荐

  1. 九、mysql触发器的概念

    .所谓触发器,就是指设置好某个表的某个操作(insert ,update ,delete)时候,同时触发的一个操作: 一般用来,比如说删除文章主栏目,那么可以利用触发器删除这个文章栏目下的所有文章 . ...

  2. Java学习之路:1、HelloWorld

    似乎每种语言都是从HelloWorld开始的,所以,我的第一个java程序,也应该是这样开始的! 1.配置好jdk后,开始编写HelloWorld.java package second;//这个应该 ...

  3. linux配置JDK(转载)

    转载自:http://blog.csdn.net/xinxin19881112/article/details/46816385 Linux CentOS 6.6安装JDK1.7 目录 1.下载JDK ...

  4. 如何应用CLR线程池来管理多线程

        class Program     {         static void Main(string[] args)         {             int intWorkerT ...

  5. Bootstrap 内核引用(一)

    方法一: Bootstrap CDN推荐 本站实例采用的是百度的静态资源库(http://cdn.code.baidu.com/)上的Bootstrap资源. 百度的静态资源库的 CDN 服务,访问速 ...

  6. python学习笔记18(UliPad 初体验)

    在windows下安装配置Ulipad 由于UliPad 是由wxPython 开发的,所以,需要先安装wxPython . wxPython下载地址: http://www.wxpython.org ...

  7. 写作技巧--Simile明喻

  8. MessagePack, Protocol Buffers和Thrift序列化框架原理和比较说明

    MessagePack, Protocol Buffers和Thrift序列化框架原理和比较说明 http://www.open-open.com/lib/view/open1412731170858 ...

  9. MySQL在windows和linux下的表名大小写问题

    MySQL在windows下是不区分大小写的,将script文件导入MySQL后表名也会自动转化为小写,结果再想要将数据库导出放到linux服务 器中使用时就出错了.因为在linux下表名区分大小写而 ...

  10. http://jingyan.baidu.com/article/a3761b2b66fe141577f9aa51.html

    http://jingyan.baidu.com/article/a3761b2b66fe141577f9aa51.html