• Sharepoint FieldType的显示问题


    1.自定义的FieldType的显示一般通过RenderPattern来输出。

    这种方法支持很多附加的表现方式,使用Switch, Foreach,Property="PName", GetVal等(看系统fieldType里面的)。

    而且只是在XML里面作的处理,即可以不重新编译就改变表现方式。看系统里面甚至用这个写很多的js出来。

    2.RenderPattern有点难写。至少我觉得如此,CAML写东西,甚至访问Property,写得来没有C#代码爽。

    如果是发布出去太多人用的,微软的,我觉得还算可以那样写。DLL不用经常修改就可以改表现。但自己用的代码,还是想直接写Render算了,用C#代码来处理各自条件。

    3.FieldControl继承自UserControl,所以可以用UserControl的方法来写Edit,写New,写Render。

    根据Control的Mode来处理各种情况就可以了。

    之前看一个MultiMediaField,在Render方法里面,根据是否Diplay状态来写一些东西。

    而CreateChildControl里面,也会在Display状态就直接返回,不再创建子控件。

    直接Render了,在DisplayPattern里就只需要定义,其它什么也不用写了。

    4.直接在Render方法里写输出,会多输出一个 

    这算是一个Bug,至少在UI上来说,经常造成影响的一个问题,多输出的 还会在前面,影响UI表现。

    5.RenderForDispaly是较好的选择

    只在Display状态会出现。Render里就可以不必写什么代码了。XML里也不必再有DisplayPattern。

    直接在这里处理各种情况来Render输出好了。不执行base.RenderForDispaly,不然会输出默认的Render结果以及讨厌的 网上甚至有文章,在这里把内容Get出来,再把这个&nbsp给删除掉。

    现在项目中暂时这样解决。尤其是输出较复杂一点的FieldControl。

    配合允许给FieldControl一些参数属性,可以实现一些自定义的效果(目前只在PublishingSite使用)。

  • 相关阅读:
    java通过UUID生成16位唯一订单号
    spring framework体系结构及内部各模块jar之间的maven依赖关系
    Java操作PDF之iText超入门
    对象拷贝
    Alluxio 1.5集群搭建
    InfluxDb中写入重复数据问题解决方案
    苹果笔记本中为虚拟机扩充硬盘的方法
    Grafana中整个Dashboard报错问题解决
    使用WebEx录制视频并转换为MP4
    Spark配置参数优先级
  • 原文地址:https://www.cnblogs.com/nonlyli/p/1235172.html
Copyright © 2020-2023  润新知