日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Sharepoint带自定义属性的FieldType

發(fā)布時(shí)間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sharepoint带自定义属性的FieldType 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

先閑話幾句,有意義的內(nèi)容在后面。

新項(xiàng)目中,很多東西都感覺(jué)卻要自己寫(xiě)FieldType,如前面所說(shuō),在UI可定制方面,FieldType還有很多不足。雖然貌似今天看到TemplateName會(huì)起一些作用(未測(cè)試),但實(shí)際上修改起來(lái)也是相當(dāng)麻煩的。

今天原本準(zhǔn)備寫(xiě)一個(gè)DateTime的FieldType的,WSS3自帶的的DateTime FieldType在Firefox下沒(méi)有Calendar來(lái)選日期,就為這一個(gè)“小小”功能,原準(zhǔn)備怎么修改原來(lái)的FieldType來(lái)實(shí)現(xiàn)兼容(可以一改就把原有的List中一并做到兼容了,跟RichText改成TinyMCE編輯一樣),結(jié)果是失敗。另外,WSS3的DateTime FieldType彈出的Calendar并不是無(wú)刷新的,點(diǎn)出來(lái)的速度之慢——已經(jīng)超出我忍受的范圍。

另一個(gè)是想增加一個(gè)更好的Dropdownlist,原來(lái)是想增加一個(gè)ComboBox的東東的記得某次看到過(guò)?在某個(gè)同事做的站點(diǎn)上看到過(guò),最終也不知道怎么做出來(lái)的。

WSS自帶的Dropdownlist只有一個(gè)Value屬性,而且,存入的就直接是Value了,估計(jì)是為了簡(jiǎn)化一些細(xì)節(jié)吧。Value和Text是用的同一個(gè)。我想寫(xiě)一個(gè)可以同時(shí)設(shè)置Value和Text屬性的Dropdownlist(我的Value需要數(shù)字值,要拿來(lái)做其它的計(jì)算用)。

之前做的FieldType都只是一個(gè)Edit,一個(gè)Render而已,并不會(huì)在選擇到List的時(shí)候給初始值(像Dropdownlist的Items),看了幾眼那個(gè)代碼覺(jué)得太復(fù)雜了。今天實(shí)在是無(wú)耐,只好自己再硬著頭皮看代碼,并且寫(xiě)出這樣的FieldType。

最后,我看著網(wǎng)上的代碼有不習(xí)慣的地方,看WSPBuilder生成的代碼也有不習(xí)慣的地方,最終么,中和成了一個(gè)我習(xí)慣一些的代碼 :( 成了跟兩邊都不相同,不知這樣會(huì)不會(huì)生成一些麻煩~~~

?

可能有點(diǎn)意義的正文

?

1.FieldType的實(shí)現(xiàn),例子很多,參見(jiàn)末尾的參考

A.《Inside WSS 3.0》(網(wǎng)上有電子書(shū),各部分內(nèi)容都很全面)

B.WSP Builder里面新創(chuàng)建一個(gè)FieldType。

C.VS WSS Extension應(yīng)該也可以生成,我沒(méi)有安裝,沒(méi)測(cè)過(guò)。

2.需要的文件:

普通的FieldType(4個(gè)文件):

fldty_TestField.xml(Field的XML定義)

TestField.cs(Field的定義,會(huì)設(shè)置調(diào)用哪一個(gè)FieldControl來(lái)編輯或顯示)

TestFieldControl.cs(定義此Field的編輯與顯示,以及獲取值的方法[Value],在此要區(qū)分是否Display狀態(tài))

TestFieldEditor.ascx(會(huì)在FieldControl類中被調(diào)用(一般只是FindControl方式去找控件而已,并不是一般的UserControl關(guān)系)

有自定義屬性的增加2個(gè):

TestFieldProEditor.ascx(設(shè)置屬性的UserControl,需要在xml中指明,且有后臺(tái)代碼類)

TestFieldPro.cs(上一個(gè)文件需要的類,基本上跟普通的UserControl一樣了)

多Column的FieldType增加一個(gè):

TestFieldValue.cs(多Column值的定義)

3.WSPBuilder生成的代碼

A.WSPBuilder生成的代碼沒(méi)有TestFieldControl.ascx,是自己直接給出控件的,我還是手動(dòng)把這個(gè)添加上去了,覺(jué)得這樣寫(xiě)起來(lái)要容易一些,修改也簡(jiǎn)便一點(diǎn)。

B.WSPBuilder生成的為帶有自定義屬性的FieldType,我想這種一般不會(huì)太多吧,刪除掉多余的。

C.WSPBuilder生成的東東,TestField.cs寫(xiě)得很復(fù)雜,注冊(cè)屬性等覺(jué)得稍顯麻煩,貌似還帶了緩存OMG,本來(lái)就已經(jīng)夠暈了,這樣寫(xiě)更暈。我一般修改成很簡(jiǎn)單的方式。
4.其它

幾個(gè)小的細(xì)節(jié),我自己開(kāi)始出錯(cuò)的地方:

A.TestFieldEditor.ascx里面有個(gè)ID,應(yīng)該與TestFieldControl.cs里的對(duì)應(yīng),這樣才可以用FindControl來(lái)找控件。

B.在xml里只定義TestFieldProEditor.ascx的位置,TestFieldEditor必須放在指定文件夾了,且似乎文件名隨便起。(沒(méi)看到哪里有指定這個(gè)對(duì)應(yīng)關(guān)系的)

C.如果要做帶屬性的FieldType,必須在xml里也把屬性定義出來(lái)!雖然我實(shí)在想不通這兩者有什么關(guān)聯(lián) :(

但不定出來(lái)就會(huì)出現(xiàn)值存不起去的情況。

5.RenderParten

可能有點(diǎn)復(fù)雜,我一直沒(méi)怎么寫(xiě)。就直接Render了。

另外可以publish一些屬性給外面調(diào)用此控件使用,也可以做到更多的自定義。

6.自定義屬性的一個(gè)Bug

新建的時(shí)候自定義屬性不能保存值,但Update時(shí)則能保存結(jié)果。

處理此Bug的方法WSPBuilder自動(dòng)生成的代碼能應(yīng)對(duì)。

參見(jiàn)另一篇日志:

About sharepoint custom FieldType bug

http://www.cnblogs.com/nonlyli/archive/2008/06/01/1211669.html

?

參考:

1.創(chuàng)建MOSS2007自定義字段類型實(shí)例 (寫(xiě)得簡(jiǎn)單易懂)

2.自定義列表字段類型(1)(2)(3) (可惜還是未完待續(xù))

3.Creating Custom Field Types with a FieldEditorUserControl (attached sample below)?

(詳細(xì),且針對(duì)Custom Properties)

轉(zhuǎn)載于:https://www.cnblogs.com/nonlyli/archive/2008/05/31/1211024.html

總結(jié)

以上是生活随笔為你收集整理的Sharepoint带自定义属性的FieldType的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。