博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sharepoint项目周记三:自定义上传页面等
阅读量:6313 次
发布时间:2019-06-22

本文共 2643 字,大约阅读时间需要 8 分钟。

项目已经进展到了第三周,终于感觉有点眉目了-_-。

由于这次的项目很多知识以前并不了解(主要是Project SDK和TFS SDK),只能一边开发一边学习,因此本周的任务主要是复杂页面的定制和webpart的开发。我们采取的是迭代开发的方式:对于难点、一时解决不了的问题留待二期解决。
碰到的问题主要有:
1、如何在一行中显示两条博客文章?
在MOSS的博客中,可以把文章列表转化成数据视图,然后在数据视图中控制页面的显示格式。由于xsl中只有foreach的循环方式,没有(for i=0; i<count;i+=2)的方式,而且在xsl中出现的html标签必须是一一对应的。要在一行中显示两条信息就需要使用转码的方式:

<
xsl:
for
-
each select
=
"
$Rows
"
>
    
<
xsl:
if
 test
=
"
position() mod 2 =1
"
>
        
<xsl:text disable-output-escaping="yes">&lt;tr &gt;</xsl:text>
        
<
td 
class
=
"
style2
"
 style
=
"
height: 24px
"
>
             
<
xsl:value
-
of disable
-
output
-
escaping
=
"
no
"
 select
=
"
substring(@Title, 1,20)
"
 
/>
         
</
td
>
    
</
xsl:
if
>
    
<
xsl:
if
 test
=
"
position() mod 2 =0
"
>
        
<
td 
class
=
"
style2
"
 style
=
"
height: 24px
"
>
            
<
xsl:value
-
of disable
-
output
-
escaping
=
"
no
"
 select
=
"
substring(@Title, 1,20)
"
 
/>
        
</
td
>
        
<xsl:text disable-output-escaping="yes">&lt;/tr&gt;</xsl:text>
    
</
xsl:
if
>
</
xsl:
for
-
each
>

通过输出特殊的tr的方式来实现

2、如何自定义自己的上传页面?
由于上传文件时会自动跳转到_layouts下的upload.aspx页面,这个页面是所有站点公用的,如果修改的话会导致所有站点都有变化。我在网上查了一下,很多人提到可以定制一个自己的文档库,作为feture等发布后来使用,但是这种方式比较麻烦。后来发现可以在upload.aspx中加入一个判断,在不同的情况下调用不同的母版页来实现定制的效果:

<
script runat
=
"
server
"
>
    
protected
 
void
 Page_PreInit(
object
 sender, EventArgs e)
    
{
        
if
 (Request.RawUrl.IndexOf(
"
courseware
"
<
 
0
)
        
{
            
this
.MasterPageFile 
=
 
"
~/_layouts/application.master
"
;
        }
    }
</
script
>

3、如何在自己的页面显示项目信息

我们的项目需要在自己的网站上显示Project Server中的项目情况,在微软的网站上下了Project 2007 SDK后发现其中有一个很好的例子:ProjTool。Project Server中提供了很多的web services,通过改造这个例子可以方便的实现自己的webpart
4、如何使用TFS中的功能(报表、工作项等)
TFS 2008中同样提供了很多web services,通过调用这些web services可以很方便的查询出工作项,对于工作项的增加、修改比较麻烦,暂且使用TFS Web access中的功能
对于报表的使用,由于TFS是直接使用的Report server,可以在自己的页面中同样调用对应的报表就可以了
5、博客等的类别中出现 + # 等符号时进入Category.aspx时有问题,找不到记录(比如C#)
这个可能是MOSS的一个BUG,当博客的类别中有中文时,MOSS会自动进入url转码,那么就可以正常进入类别一览的页面。但是当类别中出现 + # 等符号时没有进入转码,进入类别一览的页面时就不能正确显示本类别的文章了。因此我们需要首先把类别列表转成数据视图,然后在数据视图中通过Javascript来进行转码:

    
<
a href
=
"
javascript:trans('{@Title}')
"
 id
=
"
blgcat{format-number(string(@ID), '#;-#')}
"
><
xsl:value
-
of disable
-
output
-
escaping
=
"
no
"
 select
=
"
@Title
"
 
/></
a
>
 
    
<
script language
=
"
javascript
"
>
    function trans(str)
    
{
        var sHref 
=
 
"
/Lists/Categories/Category.aspx?Name=
"
 
+
 escape(str);
        var sRHref 
=
 sHref .replace(
/
\
+/
g,
"
%2b
"
)
        document.location.href 
=
 sRHref;
    }
    
</
script
>

6、搜索页面定制

重新设置搜索的结果页面,然后把_layout下的osssearchresults.aspx复制到当前网站,稍作修改
7、页面报错:无法跨 AppDomain 传递 GCHandle
当改动自定义控件ascx比较频繁时会出现此错误,把iis重启就可以了
8、页面上有javascript报错
由于在母版页中把PlaceHolderSearchArea放到div中隐藏了,那么在内容页中最好不要出现这个标记,如果在内容页中在这个标记中放入SmallSearchInputBox会报Javascript错误

    本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/12/24/1012125.html,如需转载请自行联系原作者

你可能感兴趣的文章
Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习
查看>>
Echart:前端很好的数据图表展现工具+demo
查看>>
Linux VNC黑屏(转)
查看>>
Java反射简介
查看>>
day8--socket网络编程进阶
查看>>
node mysql模块写入中文字符时的乱码问题
查看>>
分析Ajax爬取今日头条街拍美图
查看>>
内存分布简视图
查看>>
如何学习虚拟现实技术vr? vr初级入门教程开始
查看>>
第4 章序列的应用
查看>>
初识闭包
查看>>
hdu1874畅通工程续
查看>>
rails 字符串 转化为 html
查看>>
java-学习8
查看>>
AOP动态代理
查看>>
Yii2.0 下的 load() 方法的使用
查看>>
华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root
查看>>
[转] ReactNative Animated动画详解
查看>>
DNS原理及其解析过程
查看>>
没想到cnblog也有月经贴,其实C#值不值钱不重要。
查看>>