设为首页 收藏本站
查看: 626|回复: 0

[经验分享] Sharepoint带自定义属性的FieldType

[复制链接]

尚未签到

发表于 2015-9-27 13:54:53 | 显示全部楼层 |阅读模式
  先闲话几句,有意义的内容在后面。
  新项目中,很多东西都感觉却要自己写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)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119550-1-1.html 上篇帖子: SharePoint 安装出错 下篇帖子: SharePoint 2007 上 Nintex Workflow 2007 配置错误导致的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表