zoukankan      html  css  js  c++  java
  • 发一个取AD用户属性的自定义字段

    在列表中有时候需要取某个用户的属性,比如用户的displayNamedepartmentmobilehomeDirectory等等,这些东西使用“用户或用户组”字段是无法达到这样的效果的,所以做了这样一个简单的自定义字段,添加/修改List项的时候,填写用户登录名和要显示的属性,显示的时候根据登录名到AD中查询该用户的相关的属性的值来显示,这个东东还没有正式用,处于测试阶段,可以在此基础上扩展,代码在下面,仅供参考哦。
    自定义字段开发网上有挺多的教程可以看,推荐请参考Erucy's blog中的文章。下面只补充一点点,凑个字数^_^

    fldtypes_Custom.xml中定义显示的方式在<RenderPattern Name="DisplayPattern"/>定义,对于多字段(继承自SPFieldMultiColumn),拿这个字段项目的定义XML来说,是这样的:
     1 <RenderPattern Name="DisplayPattern">
     2             <Switch>
     3                 <Expr>
     4                     <Column/>
     5                 </Expr>
     6                 <Case Value="">
     7                 </Case>
     8                 <Default>
     9                     <Column SubColumnNumber="0" HTMLEncode="TRUE"/>
    10                     <HTML><![CDATA[ 's ]]></HTML>
    11                     <Column SubColumnNumber="1" HTMLEncode="TRUE"/>
    12                     <HTML><![CDATA[ is ]]></HTML>
    13                     <Column SubColumnNumber="2" HTMLEncode="TRUE"/>
    14                 </Default>
    15             </Switch>
    16         </RenderPattern>

    他显示的样子是这样的:  皮皮's 部门 is 开发部。SubColumnNumber的属性值与SPFieldMultiColumnValue中的属性相对应(在此项目中对应的是ADUserFieldValue类)。
    然后是自定义属性简单的做法,比如这里需要连接AD,那需要的自定义的属性也是在fldtypes_Custom.xml中定义的,此项目中是:
    <PropertySchema>
                
    <Fields>
                    
    <Field Name="DomainPath" DisplayName="Domain:" Type="Text" Required="TRUE" />
                    
    <Field Name="DomainUserName" DisplayName="UserName:" Type="Text" Required="TRUE" />
                    
    <Field Name="DomainPassword" DisplayName="Password:" Type="Text" Required="TRUE" />
                
    </Fields>
    </PropertySchema>
    在代码里,使用base.Field.GetCustomProperty("DomainPath")来获取,很简单,在这里也许会有一个bug,参考【解决Custom Field Type修改时属性显示不正确的问题】 ,通过打补丁即可解决,现在差不多都打了SP1了吧,所以这个bug应该是不会有的了。

    代码在这里下载

  • 相关阅读:
    经典SQL语句大全
    主键,外键,主键表,外间表
    一个不错的shell 脚本教程 入门级
    初窥Linux 之 我最常用的20条命令
    try catch finally 用法
    一个初学者对于MVC架构的理解
    第二次阶段冲刺2(6月1号)
    第二次阶段冲刺1(5月31号)
    学习进度条十三(第14周)
    学习进度条十二(第13周)
  • 原文地址:https://www.cnblogs.com/ycc/p/1036793.html
Copyright © 2011-2022 走看看