在列表中有时候需要取某个用户的属性,比如用户的displayName、department、mobile、homeDirectory等等,这些东西使用“用户或用户组”字段是无法达到这样的效果的,所以做了这样一个简单的自定义字段,添加/修改List项的时候,填写用户登录名和要显示的属性,显示的时候根据登录名到AD中查询该用户的相关的属性的值来显示,这个东东还没有正式用,处于测试阶段,可以在此基础上扩展,代码在下面,仅供参考哦。
自定义字段开发网上有挺多的教程可以看,推荐请参考Erucy's blog中的文章。下面只补充一点点,凑个字数^_^
fldtypes_Custom.xml中定义显示的方式在<RenderPattern Name="DisplayPattern"/>定义,对于多字段(继承自SPFieldMultiColumn),拿这个字段项目的定义XML来说,是这样的:
他显示的样子是这样的: 皮皮's 部门 is 开发部。SubColumnNumber的属性值与SPFieldMultiColumnValue中的属性相对应(在此项目中对应的是ADUserFieldValue类)。
然后是自定义属性简单的做法,比如这里需要连接AD,那需要的自定义的属性也是在fldtypes_Custom.xml中定义的,此项目中是:
 <PropertySchema>
<PropertySchema>
 <Fields>
            <Fields>
 <Field Name="DomainPath" DisplayName="Domain:" Type="Text" Required="TRUE" />
                <Field Name="DomainPath" DisplayName="Domain:" Type="Text" Required="TRUE" />
 <Field Name="DomainUserName" DisplayName="UserName:" Type="Text" Required="TRUE" />
                <Field Name="DomainUserName" DisplayName="UserName:" Type="Text" Required="TRUE" />
 <Field Name="DomainPassword" DisplayName="Password:" Type="Text" Required="TRUE" />
                <Field Name="DomainPassword" DisplayName="Password:" Type="Text" Required="TRUE" />
 </Fields>
            </Fields>
 </PropertySchema>
在代码里,使用base.Field.GetCustomProperty("DomainPath")来获取,很简单,在这里也许会有一个bug,参考【解决Custom Field Type修改时属性显示不正确的问题】 ,通过打补丁即可解决,现在差不多都打了SP1了吧,所以这个bug应该是不会有的了。
</PropertySchema>
在代码里,使用base.Field.GetCustomProperty("DomainPath")来获取,很简单,在这里也许会有一个bug,参考【解决Custom Field Type修改时属性显示不正确的问题】 ,通过打补丁即可解决,现在差不多都打了SP1了吧,所以这个bug应该是不会有的了。
代码在这里下载
 
 
自定义字段开发网上有挺多的教程可以看,推荐请参考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>
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>
<PropertySchema> <Fields>
            <Fields> <Field Name="DomainPath" DisplayName="Domain:" Type="Text" Required="TRUE" />
                <Field Name="DomainPath" DisplayName="Domain:" Type="Text" Required="TRUE" /> <Field Name="DomainUserName" DisplayName="UserName:" Type="Text" Required="TRUE" />
                <Field Name="DomainUserName" DisplayName="UserName:" Type="Text" Required="TRUE" /> <Field Name="DomainPassword" DisplayName="Password:" Type="Text" Required="TRUE" />
                <Field Name="DomainPassword" DisplayName="Password:" Type="Text" Required="TRUE" /> </Fields>
            </Fields> </PropertySchema>
</PropertySchema>代码在这里下载
 
 
 
 
 
                    
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号