Sharepoint带自定义属性的FieldType
先閑話幾句,有意義的內容在后面。
新項目中,很多東西都感覺卻要自己寫FieldType,如前面所說,在UI可定制方面,FieldType還有很多不足。雖然貌似今天看到TemplateName會起一些作用(未測試),但實際上修改起來也是相當麻煩的。
今天原本準備寫一個DateTime的FieldType的,WSS3自帶的的DateTime FieldType在Firefox下沒有Calendar來選日期,就為這一個“小小”功能,原準備怎么修改原來的FieldType來實現兼容(可以一改就把原有的List中一并做到兼容了,跟RichText改成TinyMCE編輯一樣),結果是失敗。另外,WSS3的DateTime FieldType彈出的Calendar并不是無刷新的,點出來的速度之慢——已經超出我忍受的范圍。
另一個是想增加一個更好的Dropdownlist,原來是想增加一個ComboBox的東東的記得某次看到過?在某個同事做的站點上看到過,最終也不知道怎么做出來的。
WSS自帶的Dropdownlist只有一個Value屬性,而且,存入的就直接是Value了,估計是為了簡化一些細節吧。Value和Text是用的同一個。我想寫一個可以同時設置Value和Text屬性的Dropdownlist(我的Value需要數字值,要拿來做其它的計算用)。
之前做的FieldType都只是一個Edit,一個Render而已,并不會在選擇到List的時候給初始值(像Dropdownlist的Items),看了幾眼那個代碼覺得太復雜了。今天實在是無耐,只好自己再硬著頭皮看代碼,并且寫出這樣的FieldType。
最后,我看著網上的代碼有不習慣的地方,看WSPBuilder生成的代碼也有不習慣的地方,最終么,中和成了一個我習慣一些的代碼 :( 成了跟兩邊都不相同,不知這樣會不會生成一些麻煩~~~
?
可能有點意義的正文
?
1.FieldType的實現,例子很多,參見末尾的參考
A.《Inside WSS 3.0》(網上有電子書,各部分內容都很全面)
B.WSP Builder里面新創建一個FieldType。
C.VS WSS Extension應該也可以生成,我沒有安裝,沒測過。
2.需要的文件:
普通的FieldType(4個文件):
fldty_TestField.xml(Field的XML定義)
TestField.cs(Field的定義,會設置調用哪一個FieldControl來編輯或顯示)
TestFieldControl.cs(定義此Field的編輯與顯示,以及獲取值的方法[Value],在此要區分是否Display狀態)
TestFieldEditor.ascx(會在FieldControl類中被調用(一般只是FindControl方式去找控件而已,并不是一般的UserControl關系)
有自定義屬性的增加2個:
TestFieldProEditor.ascx(設置屬性的UserControl,需要在xml中指明,且有后臺代碼類)
TestFieldPro.cs(上一個文件需要的類,基本上跟普通的UserControl一樣了)
多Column的FieldType增加一個:
TestFieldValue.cs(多Column值的定義)
3.WSPBuilder生成的代碼
A.WSPBuilder生成的代碼沒有TestFieldControl.ascx,是自己直接給出控件的,我還是手動把這個添加上去了,覺得這樣寫起來要容易一些,修改也簡便一點。
B.WSPBuilder生成的為帶有自定義屬性的FieldType,我想這種一般不會太多吧,刪除掉多余的。
C.WSPBuilder生成的東東,TestField.cs寫得很復雜,注冊屬性等覺得稍顯麻煩,貌似還帶了緩存OMG,本來就已經夠暈了,這樣寫更暈。我一般修改成很簡單的方式。
4.其它
幾個小的細節,我自己開始出錯的地方:
A.TestFieldEditor.ascx里面有個ID,應該與TestFieldControl.cs里的對應,這樣才可以用FindControl來找控件。
B.在xml里只定義TestFieldProEditor.ascx的位置,TestFieldEditor必須放在指定文件夾了,且似乎文件名隨便起。(沒看到哪里有指定這個對應關系的)
C.如果要做帶屬性的FieldType,必須在xml里也把屬性定義出來!雖然我實在想不通這兩者有什么關聯 :(
但不定出來就會出現值存不起去的情況。
5.RenderParten
可能有點復雜,我一直沒怎么寫。就直接Render了。
另外可以publish一些屬性給外面調用此控件使用,也可以做到更多的自定義。
6.自定義屬性的一個Bug
新建的時候自定義屬性不能保存值,但Update時則能保存結果。
處理此Bug的方法WSPBuilder自動生成的代碼能應對。
參見另一篇日志:
About sharepoint custom FieldType bug
http://www.cnblogs.com/nonlyli/archive/2008/06/01/1211669.html
?
參考:
1.創建MOSS2007自定義字段類型實例 (寫得簡單易懂)
2.自定義列表字段類型(1)(2)(3) (可惜還是未完待續)
3.Creating Custom Field Types with a FieldEditorUserControl (attached sample below)?
(詳細,且針對Custom Properties)
轉載于:https://www.cnblogs.com/nonlyli/archive/2008/05/31/1211024.html
總結
以上是生活随笔為你收集整理的Sharepoint带自定义属性的FieldType的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电信在线防杀毒墙,到底是不是流氓软件
- 下一篇: [转帖]最新FLASH 0DAY 漏洞总