Office中国论坛/Access中国论坛

标题: 如何在列表模板中增加一个计算列 [打印本页]

作者: ocean    时间: 2005-7-19 21:59
标题: 如何在列表模板中增加一个计算列


       ***********************************************************************************

      



       *                  

       版权声明                        

      



       *         

       此文章为ocean所有,版权归ocean所有,任何网站



       *和 媒体转载必须包含此段声明,否则将视为侵权,作者将  



       * 保留一切权力。此声明为此文章中不可或缺的一部分。  



       * 作者网名:ocean                                 

      



       * 作者email:[url=mailtocean@forever.net.cn][color="#0000ff"]ocean@forever.net.cn[/url]                  

      



       * 作者网站:[color="#0000ff"]http://www.oceanstudio.net            

      



       *                    

      

       [color="#800080"]http://sps.oceanstudio.net
            

      



       * 作者blog:博客园,[color="#0000ff"]http://www.cnblogs.com/ocean  

      

      

       *                 ocean's blog,[color="#800080"]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。

          </img>
作者: ui    时间: 2005-7-23 18:41
又有新例子,收了
作者: 剑气潇潇    时间: 2005-9-15 18:45
好东西




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3