SharePoint 2010 使用自定义aspx页面替换列表默认的新建(NewForm.aspx),查看(DispForm.aspx)和编辑(EditForm.aspx)页面
2011-11-04 22:34 四毛的家 阅读(1315) 评论(1) 编辑 收藏 举报如何使用自定义的aspx页(比如Application Page)替换列表默认的NewForm.aspx, DispForm.aspx 和 EditForm.aspx的页面?如果你只是更改这些页面的界面,那么推荐使用SPD2010和InfoPath,它们更快速便捷。唯一的缺点是使用这些工具不能自定义后台代码(也许可以,只是我不会)。下面是我用的解决方案:
1.假设创建好三个Application Page分别叫newform.aspx, dispform.aspx 和 editform.aspx。它们放在Layouts目录下。
再假设我的列表叫:My List。
2.你可以使用控制台应用程序或者WinForm应用程序。这里我使用一个可视webpart。在ascx页面上放在一个按钮,按钮的Click事件里下如下代码:
SPWeb web = SPContext.Current.Web; //启用非安全更新 web.AllowUnsafeUpdates = true ; //获取列表 SPList list = web.Lists[ "My List" ]; //获取列表的内容类型 SPContentType ct = list.ContentTypes[ "Item" ]; //设置内容类型的属性 ct.EditFormUrl = "_layouts/editform.aspx" ; ct.NewFormUrl = "_layouts/newform.aspx" ; ct.DisplayFormUrl = "_layouts/dispform.aspx" ; ct.Update(); list.Update(); |
上面的代码原理很简单,就是获取列表的内容类型。而SPContentType类有EditFormUrl,NewFormUrl,DisplayFormUrl属性。通过更新这三个属性可以满足我们的需求。
注意:1.关于内容类型Item,如果你的SharePoint 2010是中文版,请改成:项目。否则会收到未将对象引用设置到实例的错误。
关于内容类型的继承,参考:http://www.cnblogs.com/Sunmoonfire/archive/2008/06/25/1229875.html
2.如果你想改成默认,请用下面的url替换上面的url.
/Lists/[列表标题]/NewForm.aspx;
/Lists/[列表标题]/DispForm.aspx;
/Lists/[列表标题]/EditForm.aspx;
(注意,关于[列表标题]的替换原则:如果你的列表标题是英文名,那么就替换成对应的英文即可。如果列表标题是中文名,请替换成list+数字 具体请看列表所有项目视图地址栏URL)
3.关于代码的使用方法,正如我前面说的你可以使用控制台应用程序,也可以使用WinForm应用程序,甚至像我使用一个webpart。代码只是改变指定列表的内容类型三个属性,一旦更改成功,代码就无用了。
另外,上面的代码只是改变列表My List的内容类型属性,不会影响其他列表。不过,如果你使用下面的代码可能会改变所有的。
SPWeb web = SPContext.Current.Web;
web.AllowUnsafeUpdates = true;
SPContentType ct = web.ContentTypes["Name Of Your Content Type"];
ct.EditFormUrl = "_layouts/editform.aspx";
ct.NewFormUrl = "_layouts/newform.aspx";
ct.DisplayFormUrl = "_layouts/dispform.aspx";
ct.Update();
本文参考:http://blog.qumsieh.ca/2009/05/15/how-to-change-the-default-editform-newform-and-dispform/
由于写本文时,本人并没有sharepoint 环境,所以本文并没有完全一一验证。仅供参考。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)