转: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. [转]DRY原则和Shy原则

    转自:http://blog.csdn.net/hukeab/article/details/2944675   保障可维护性的主要诀窍是遵循DRY原则和Shy原则. 在一个系统的整个生命周期里,理解 ...

  2. 请给出一个左侧定宽右侧自适应的HTML结构及样式

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...

  3. jvm 参数调优

    FROM: http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html#CMSInitiatingOccupancyFraction ...

  4. js模拟触发事件

     html标签元素封装着实用的[事件],但在很多时候,需要[模拟触发事件],比如 [按钮单机事件]  可以实实在在点击按钮触发该事件,但体验而言,很多时候需要js逻辑处理让实现 触发事件的效果这时就用 ...

  5. JS两种声明函数的方法以及调用顺序

    两种声明方法: 1. var a = function () {...}; 2. function a() {...}; 第一种方式必须先声明后调用,而第二种方式函数调用在声明之前之后都可以. //第 ...

  6. CQRS学习——Dpfb以及其他[引]

    [Dpfb的起名源自:Ddd Project For Beginer,这个Beginer自然就是博主我自己了.请大家在知晓这是一个入门项目的事实上,怀着对入门者表示理解的心情阅读本系列.不胜感激.] ...

  7. 彻底弄懂LSH之simHash算法

    马克·吐温曾经说过,所谓经典小说,就是指很多人希望读过,但很少人真正花时间去读的小说.这种说法同样适用于“经典”的计算机书籍. 最近一直在看LSH,不过由于matlab基础比较差,一直没搞懂.最近看的 ...

  8. zoj 3725

    题意: n个格子排成一条直线,可以选择涂成红色或蓝色,问最少 m 个连续为红色的方案数. 解题思路: 应该是这次 ZOJ 月赛最水的一题,可惜还是没想到... dp[i] 表示前 i 个最少 m 个连 ...

  9. 1987-A. 集训队选拔

    描述 南邮ACM暑期集训队一年一度的选拔如火如荼的开始了.按照以往的惯例,通过ACM校赛预赛和决赛的两轮选拔,成绩优异者将入选集训队,获得下半年在各大赛区现场赛上与各路神牛角逐奖牌的机会.但是,校赛的 ...

  10. [itint5]二叉树转换线索二叉树

    http://www.itint5.com/oj/#27 用了基于stack的中序遍历,记录一下last,就很简单了. #include <stack> /*树结点的定义(请不要在代码中定 ...