现在的位置: 首页 > 综合 > 正文

MOSS中通过视图样式实现修改个性化的视图展现

2012年11月21日 ⁄ 综合 ⁄ 共 3721字 ⁄ 字号 评论关闭

今天在MOSS开发群里一哥们问怎么让图片库展示的时候像WINDOWS目录中展示图片一样,只显示缩略图

当然了,直接在视图设置里把显示字段只选择“缩略图”不是咱想要的。。。

在群里给他提供了思路后就干活了,不知道他做得怎么样,刚才有点时间,就弄了一下,发上来,或许对有些朋友有用。

先看效果图

image

点击小图在新窗口中打开原图,点击文件夹直接进入(这里进入文件夹没有特别处理,简单打开URL了)

好吧,简单说说实现步骤吧

其实很简单,就是做了一个视图样式,然后在视图设置里选择了这个样式:

image

 

这样式如何做的呢?

需要修改的文件如下:

C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\TEMPLATE\GLOBAL\XML\VWSTYLES.XML

 

推荐使用VS打开,整理一下代码。

把id为6的样式拷一份,粘到最后,修改ID为100或者别的大于20的数字。改diaplayname…..

关键部分就是在ViewBody这一节里,代码有点多,就不一点一点说了,直接粘上来。有啥问题可以回复。

<ViewStyle ID="100" DisplayName="仅缩略图 By:EricInBj@hotmail.com" BaseType="1" Preview="_layouts/images/prvpicl.gif" Description="用于图片库,设置此样式后视图页面上仅显示图片的缩略图,By: Eric| EricWang.cnblogs.com">
  <ViewHeader>
    <HTML><![CDATA[<DIV>]]></HTML>
    <HTML>
      <![CDATA[
        <style>
        .ImgContainer{
        display:block;
        float:left;
        margin:2px;
        border:1 solid gray;
        }
        .ImgContainer a{
        }
        .ImgContainer a:hover{
        }
        </style>
        ]]>
    </HTML>
  </ViewHeader>
  <ViewBody>
    <Switch>
      <Expr>
        <IfEqual>
          <Expr1>
            <LookupColumn Name="FSObjType"/>
          </Expr1>
          <Expr2>0</Expr2>
          <Then>
            <Field Name="EncodedAbsUrl"/>
          </Then>
          <Else>
            <Field Name="ServerUrl" URLEncodeAsURL="TRUE"/>
          </Else>
        </IfEqual>
      </Expr>
      <Case Value="">
        <HTML><![CDATA[<div]]></HTML>
      </Case>
      <Default>
        <HTML>
          <![CDATA[<div class="ImgContainer" id=row]]>
        </HTML>
        <Column Name="ID"/>
      </Default>
    </Switch>
    <HTML><![CDATA[>]]></HTML>
    <HTML>
      <![CDATA[<table style="height: 150px; width: 150px; ">
      <tr>
      <td style="vertical-align: middle; text-align: center; ">
      
      <a href="]]>
    </HTML>
    <Field Name="EncodedAbsUrl"/>
    <HTML>
      <![CDATA["  target="]]>
    </HTML>
    <IfEqual>
      <Expr1>
        <Field Name="FSObjType" />
      </Expr1>
      <Expr2>0</Expr2>
      <Then>
        <HTML>
          <![CDATA[_blank"> <img border="0" src="]]>
        </HTML>
        <HttpVDir />
        <HTML><![CDATA[/_layouts/AssetUploader.aspx?Size=&ImageUrl=]]></HTML>
        <Field Name="ServerUrl" URLEncode="TRUE" />
      </Then>
      <Else>
        <HTML><![CDATA[_self"> <img border="0" src="/_layouts/Images/Folder32.gif]]></HTML>
      </Else>
    </IfEqual>
    <HTML><![CDATA["></a></td></tr></table>]]></HTML>
    <HTML><![CDATA[</DIV>]]></HTML>
  </ViewBody>
  <ViewFooter>
    <HTML><![CDATA[</DIV>]]></HTML>
  </ViewFooter>
  <GroupByHeader>
    <HTML><![CDATA[<TBODY id="titl]]></HTML>
    <GetVar Name="GroupByLevelString"/>
    <HTML><![CDATA[" groupString="]]></HTML>
    <GetVar Name="GroupByValueString"/>
    <HTML><![CDATA["><TR><TD colspan="100"]]></HTML>
    <Switch>
      <Expr>
        <GetVar Name="GroupByIndent"/>
      </Expr>
      <Case Value="0">
        <HTML><![CDATA[ class="ms-gb" ]]></HTML>
      </Case>
      <Default>
        <HTML><![CDATA[ class="ms-gb2" ]]></HTML>
      </Default>
    </Switch>
    <HTML><![CDATA[ nowrap><img src="/_layouts/images/blank.gif" alt="" height=1 width=]]></HTML>
    <GetVar Name="GroupByIndent"/>
    <HTML><![CDATA[><a href="javascript:" onclick="javascript:ExpCollGroup(']]></HTML>
    <GetVar Name="GroupByLevelString"/>
    <HTML><![CDATA[','img_]]></HTML>
    <GetVar Name="GroupByLevelString"/>
    <HTML><![CDATA[');return false;"><img id="img_]]></HTML>
    <GetVar Name="GroupByLevelString"/>
    <HTML><![CDATA[" src="/_layouts/images/minus.gif" alt="]]></HTML>
    <HTML>$Resources:groupExpColl;</HTML>
    <HTML><![CDATA[" border="0"></a>&nbsp;]]></HTML>
    <HTML><![CDATA[<a href="javascript:" onclick="javascript:ExpCollGroup(']]></HTML>
    <GetVar Name="GroupByLevelString"/>
    <HTML><![CDATA[','img_]]></HTML>
    <GetVar Name="GroupByLevelString"/>
    <HTML><![CDATA[');return false;">]]></HTML>
    <GetVar Name="GroupByField" HTMLEncode="TRUE" />
    <HTML><![CDATA[</a> :&nbsp;]]></HTML>
    <GetVar Name="GroupByValue"/>
    <HTML><![CDATA[</TD></TR></TBODY>]]></HTML>
    <HTML>
      <![CDATA[
<script>
	fIsInGroupByView = true;
</script>]]>
    </HTML>
  </GroupByHeader>
  <ViewFields>
    <FieldRef Name="SelectedFlag"/>
    <FieldRef Name="DocIcon"/>
    <FieldRef Name="NameOrTitle"/>
    <FieldRef Name="ImageSize"/>
    <FieldRef Name="FileSizeDisplay"/>
    <FieldRef Name="RequiredField" Explicit="TRUE"/>
  </ViewFields>
  <Script>
    g_RequiredFields[100] = new Array;
  </Script>
</ViewStyle>

 

 

 

但有一点不爽的就是:部署的时候需要手动修改这个文件,如果有多个前端,每次部署,更新,那够累的,该死的微软这里没有实现得很好,如果能像自定义字段那样部署多好。但也不是没办法。咱们可以写代码来修改这个文件,比如在Feature激活的时候把我们的样式加进入,停用的时候去掉。有空了再说吧。。。

抱歉!评论已关闭.