在定义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_"__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即有的功能。
?
?
?
總結
以上是生活随笔為你收集整理的在定义SharePoint列表的SPD数据视图的时候需要注意的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android程序开发中关于设置全屏无效
- 下一篇: 水晶报表提示“需要数字字段”