在定义SharePoint列表的SPD数据视图的时候需要注意的问题

为了开发的效率我们通常对SharePoint列表的新建、编辑等自带的ASPX表单进行自定义,但在实际的过程中,老是会出现莫名其妙的错误,从而造成开发有可能无限拖延。

首先,作为开发者,我们要清楚微软一贯的行事风格,就是一个错误往往并不是您的作法不对,而是系统并不完善。

所以,我把多年来的对SharePoint开发的经验写下来,在SPD中往往对数据视图并不能作太频繁的改动,往往你对数据视图一个“非DEMO”的操作,就会引发意想不到的错误,从而造成您的开发时间有可能无限地拖延。

这些错误我总结下来,有如下的原因:

1、频率地对数据更改“新建”、“编辑”的模式, 当你插入的数据视频一会从新建表单变成编辑表单,而又往复时,会造成巨大的灾难。

2、频率地对数据的呈现模式进行更变,如一个字段你感觉默认的显示效果不行进,您会把它从“列表表单域”-> “文本框”,然后又改回来,这又会造成巨大灾难。

我们通过分析ASPX文件的代码,来发现其中的奥秘:

比如在定义一个新建列表的数据视图时,系统如自动生成在SPD中的如下的定义:

<SharePoint:FormField runat="server" id="ff27{$Pos}" ControlMode="New" FieldName="_x7533__x8bf7__x5173__x95ed_" <br>__designer:bind="{ddwrt:DataBind('i',concat('ff27',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@_x7533__x8bf7__x5173__x95ed_')}" />

 当1发生时,我会发现在这个字段中的一个属性 ControlMode 可能会不对,当是新建表单时,我们一定要保持这个值等于New,在多次进行更改时这个值可能会于我们的表单冲突。

当2发生时,我会发现往往在_designer:bind,这个属性中的, ddwrt:DataBind这个方法中的, concat('******',$Pos,这个部分不对,
这个部分应该于id属性相对应,如果id为*****{$Pos},那么这个部分应该就是 conct("*****",$Pos}。

所以在自定义数据视图时,我们要抱定一个理念,SPD只是给我们自动生成代码的工具,而不是微软所说的万能的工具,是充满BUG的,

千万不要相信SPD自动生成的代码,我们可以通过检查SPD生成的自动代码,并把它更正,才能高效地利用这个工具。

其实在SharePont 2013 以后的版本中,就取消了所见即所得的视图模式了,我想,这可能SPD未来的使命吧,既然自动生成代码做不好,我们就让专业人士去一行一行写XSL代码,而非专业人士,您就用用SharePoint即有的功能。

 

 

 

posted @   dosboy  阅读(687)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示