如何在列表模板中增加一个计算列

***********************************************************************************
*                  版权声明                        
*         此文章为ocean所有,版权归ocean所有,任何网站
*和 媒体转载必须包含此段声明,否则将视为侵权,作者将 
* 保留一切权力。此声明为此文章中不可或缺的一部分。 
* 作者网名:ocean                                  
* 作者email:ocean@forever.net.cn                  
* 作者网站:http://www.oceanstudio.net             
*                     http://sps.oceanstudio.net             
* 作者blog:博客园,http://www.cnblogs.com/ocean  
*                 ocean's blog,http://www.oceanstudio.net/sps/blog 
* 此文章发表时间:2005年7月19日                     
* 此文章源:http://ocean.cnblogs.com/archive/2005/07/19/195824.html                                   
************************************************************************************

      今天有一个网友询问,如果要在列表模板中增加一个计算列,公式应该写在什么地方。当时我也不知道怎么写,最正点的回答就是查SDK看CAML的语法帮助,当然CAML比较复杂,谁看着谁头疼,所以我就借用前段时间写的属性列表查看器(前段时间写的一个免费WebPart,可以点击此处下载 详细信息)来研究了一下。

      列表模板的定义是在Schema.xml中定义的,要添加一列,只要在<Fields>节内增加一个<Field>即可。但是现在要解决是增加一个计算列。所以首先我想到的是先看看在界面上新建一个计算列时,这个列的schema是什么。

      首先在一个列表中定义了一个计算列,列名为“列14”,定义公式为:标题&"aa"。实际很简单,就是在标题后面加上aa两个字符。然后通过属性列表查看器取这一列的schemaxml,得到如下:


<Field Type="Calculated" DisplayName="列14" Format="DateOnly" LCID="2052" ResultType="Text" ReadOnly="TRUE" IMEMode="inactive" Name="_x5217_14" ColName="sql_variant1"><Formula>=Title&amp;"aa"</Formula><FieldRefs><FieldRef Name="Title" /></FieldRefs></Field>
      

     也即公式写在<Formula></Formula>之间 即可。这里简要说明一下,DisplayName对应的为Title,Name对应的是InternalName。在<FieldRefs>中对应的为引用的列名。这个列名需要是InternalName。 在sps的界面上自定义列表的时候,添加的栏的栏名为Title,也就是DisplayName,真正的Name是自动生成的,类似_x5217_14。

    

原文地址:https://www.cnblogs.com/ocean/p/195824.html