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

sharepoint2007开发备用链接

2012年03月13日 ⁄ 综合 ⁄ 共 13528字 ⁄ 字号 评论关闭

SharePoint小技巧记录如下,不断更新中

0 、前一个页面的RUL
ASP.NET   Request.Referrer
jsp              String request_url=request.getHeader("Referer");
asp             Request.ServerVariables("HTTP_REFERER")
1 、WebForm中Group效果的html

   

动态

 

 

2、WebForm中滚动字幕效果的html

html 滚动字幕代码

基本语法:


举例:
啦啦啦,我会移动耶! 
文字移动属性的设置:
方向  #=left, right
举例:
啦啦啦,我从右向左移! 

啦啦啦,我从左向右移! 
方式 :
 #=scroll, slide, alternate
举例:
啦啦啦,我一圈一圈绕着走! 

啦啦啦,我只走一次就歇了! 

啦啦啦,我来回走耶!
循环 :
 #=次数;若未指定则循环不止(infinite)
举例:
啦啦啦,我只走 3 趟哟! 

啦啦啦,我只走 3 趟哟! 

啦啦啦,我只走 3 趟哟! 
速度:

举例:
啦啦啦,我走得好快哟! 
延时 :

举例:
啦啦啦,我走一步,停一停! 
外观(Layout)设置:

对齐方式(Align)  #=top, middle, bottom

啦啦啦,我会移动耶!

对齐上沿、中间、下沿。 
底色 :
 
举例:
#=rrggbb 16 进制数码,或者是下列预定义色彩:
Black, Olive, Teal, Red, Blue, Maroon, Navy, Gray, Lime, 
Fuchsia, White, Green, Purple, Silver, Yellow, Aqua 
啦啦啦,我会移动耶! 
面积 :
举例:

啦啦啦,我会移动耶!
 
啦啦啦,我会移动耶!

空白:(Margins)
举例:
啦啦啦,我会移动耶!
大家好!
2:在DREAMWEAVER这个工具里怎么插入一个打开网叶就自动播放音乐,而且整个过程隐藏的音频播放,如果用 html 代码写怎么写 
答:

背景音乐 

 #=WAV 文件的 URL
 #=循环数

另及:

ONMOUSEOUT=this.start() :用来设置鼠标移出该区域时继续滚动
ONMOUSEOVER=this.stop(): 用来设置鼠标移入该区域时停止滚动

3、SharePoint中的权限提升有一个小的注意点,
在以前SharePoint 2003 中,impersonate 是一个可以在sps 环境中使用所有功能的至高无上选择,通过impersonate 就可以通过Object Modal 的方式操作SharePoint 的所有功能。但是到了Microsoft  Office SharePoint Server 2007 (moss2007 ,SharePoint Portal Server 2003 的后续版本) 这个又出现了新的变化,Impersonate 被丢弃了,而取而代之的是声称跟好的SPSecurity.RunWithElevatedPrivileges() , 它通过传入一个无返回,无输入参数的委托作为参数,对委托的方法以提升权限后的身份去运行,来达到通过Object Modal 方式访问Moss 中所有资源和功能的目的。
        在网上有些文章指出SPSecurity.RunWithElevatedPrivileges 这个方法实际上是用了IIS 中应用程序池中的用户去代替当前用户去运行,委托中的代码。这的确如此

但是这个方法并不是一步到位,直接的去使用应用程序池的用户,而是通过了一个所谓的“代理人”去完成这个事。无论在将Moss 的Web 应用程序部署为Windows 集成身份验证还是自定义的Forms 验证,在Moss 的所有列表库或文档库中的权限列表中,都会看到一个人,就是SHAREPOINT\System 这个用户,这个用户也是映射为当前的web 应用的网站集管理员,一般是第一个管理员。

Moss 2007  中,就是通过这个系统默认的管理帐号去模拟IIS 中应用程序池的用户,来达到对当前用户操作提升权限的效果。这就是说,其实在提升权限之后的一切操作都是以这个系统帐户(SHAREPOINT\system) 的身份去执行的,所以可以看到,若通过提升权限后进行的对文档库或列表进行添加、修改,在列表项的作者或修改人都会是系统帐户,而不是当前登录那个人的帐户,除非当前登录的人是网站集的管理员。
        因为,SPSecurity.RunWithElevatedPrivileges 是通过模拟一个固定的帐户去进行操作,所以就带来了另一个问题,就是当这“代理人”系统帐户对列表或文档没有权限的时候,就像上图那样,系统帐户对列表的权限是受限访问,SPSecurity.RunWithElevatedPrivileges 就会不起作用,而且在代码的层面上很难发现这个问题。所以在需要通过调用SPSecurity.RunWithElevatedPrivileges来提升权限操作的列表或文档库,都需要确保系统帐户(SHAREPOINT\system)在该列表或文档库中存在,并且这个帐户的权限必须为完全控制。

这样调用提升权限时才会成功。

 

<Field ID="{7F55A8F0-4555-46BC-B24C-222240B862AF}" Type="RichHTML" Name="NewsBodyField" DisplayName="News Body" StaticName="NewsBodyField" Hidden="False" Required="True" Sealed="False" />

<Field ID="{7F55A8F0-4555-46BC-B24C-222240B862AF}" Type="RichHtmlField" Name="NewsBodyField" DisplayName="News Body" StaticName="NewsBodyField" Hidden="False" Required="True" Sealed="False" />

http://msdn.microsoft.com/en-us/library/ms437580.aspx


4、ItemDeleting中获取SPContext
SPContext.Current在EventHandler中的ItemDeleting,也就是事件发生之前是不能获取的,详细解释如下网页,里面有解决办法,看来对底层的东西很不熟悉啊。

http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/ccff5abe-07e7-48d6-bf85-ebb3d6397186/

5、Caml查询的精确匹配时间
caml查询的时候默认是不精确匹配时间的,需要加上一个属性,就是
IncludeTimeValue='true'
使得caml查询变成

<Where>
                                           

                                              
<Eq>
                                                
<FieldRef Name='_ModerationStatus' />
                                                
<Value Type='ModStat'>已批准Value>
                                             
Eq>
                                              
<Leq>
                                                 
<FieldRef Name='" + list.Fields["公告发布时间"].InternalName + @"' />
                                                 
<Value Type='DateTime' IncludeTimeValue='true'>+ DateTime.Now.ToString() + @"ZValue>
                                              
Leq>
                                            

                                       
Where>

这样再查询的话,就是精确匹配时间的查询了。

6、WebPart中获取当前页面的ListViewWebPart
using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using System.Xml;
using System.ComponentModel;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;

namespace WebPartDemo5
{
    [Guid(
"6aa788c7-9a39-487c-8e9d-31b17c863968")]
    
public class WebPartDemo5 : Microsoft.SharePoint.WebPartPages.WebPart
    {
        
private string _strText;
        [Personalizable]
        [WebBrowsable]
        [WebDisplayName(
"请输入一段文字")]
        [WebDescription(
"Web Part上将会出现这段文字")]
        [Category(
"个性设置")]
        
public string StrText
        {
            
get
            {
                
return _strText;
            }
            
set
            {
                _strText 
= value;
            }
        }
        
public WebPartDemo5()
        {
        }
        
protected override void OnLoad(EventArgs e)
        {
            
base.OnLoad(e);
            
try
            {
                
foreach (Microsoft.SharePoint.WebPartPages.WebPart wp in this.Zone.WebParts)
                {
                    
if (wp is Microsoft.SharePoint.WebPartPages.ListViewWebPart)
                    {
                        
this.Controls.Add(new LiteralControl(StrText));
                        Microsoft.SharePoint.WebPartPages.ListViewWebPart listWp 
= wp as Microsoft.SharePoint.WebPartPages.ListViewWebPart;
                        XmlDocument doc 
= new XmlDocument();
                        doc.LoadXml(listWp.ListViewXml);
                        XmlNode node 
= doc.DocumentElement.SelectSingleNode("Query");
                        node.InnerXml
=@"
                                          
                                             
                                             
                                          

                                       
";
                        listWp.ListViewXml 
= doc.InnerXml;
                        
break;
                    }
                }
            }
            
catch (Exception ex)
            {
                
this.Controls.Add(new LiteralControl(ex.Message));
            }
        }
    }
}

7、2009-2-25更新
      1)两个应用的Session是不通用的,也就是说在一个应用中存储一个session["username"],在另外一个应用中不能获取,另外一个应用存储的session["username"]和前一个应用的不是一回事,互相不能访问,他们在不同的会话中。
     2) 两个应用对应的是两个本地目录。
      3)同一个应用的,不同网站集之间session可以互相访问,也就是同一个会话。不同的网站集在同一个本地目录。
      4)不同应用,不同网站集之间获取数据没有问题

上面的都是我用下面这个用户控件检测出来的结果,代码如下


@ Register Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
    Namespace
="Microsoft.SharePoint.WebControls" TagPrefix="cc1" %>
<div>
    
<br />
    
<fieldset><legend>app1的任务legend>
    
<asp:Button ID="Button3" runat="server" Text="获取app1's任务" onclick="Button3_Click" />
    
<cc1:SPGridView ID="SPGVAPP1" AutoGenerateColumns="false" runat="server">
    
<Columns>
        
<cc1:SPBoundField DataField="Title" >cc1:SPBoundField>
    
Columns>
    
cc1:SPGridView>
    
fieldset>
    
<fieldset><legend>app2的任务legend>
    
<asp:Button ID="Button4" runat="server" Text="获取app2's任务" onclick="Button4_Click" />
    
<cc1:SPGridView ID="SPGVAPP2" AutoGenerateColumns="false" runat="server">
    
<Columns>
        
<cc1:SPBoundField DataField="Title" >cc1:SPBoundField>
    
Columns>
    
cc1:SPGridView>
    
fieldset>
    
<fieldset><legend>app2's anotherSite的任务legend>
    
<asp:Button ID="Button5" runat="server" Text="app2's anotherSite的任务" onclick="Button5_Click" />
    
<cc1:SPGridView ID="SPGVANOSITE" AutoGenerateColumns="false" runat="server">
    
<Columns>
        
<cc1:SPBoundField DataField="Title" >cc1:SPBoundField>
    
Columns>
    
cc1:SPGridView>
    
fieldset>
    
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" 
        Text
="获取当前Session["UserName"]" />
    
<br />
    当前用户是:
<asp:Label ID="lblUserName" runat="server" BorderStyle="Solid" 
        BorderWidth
="1px" Text="Label" Width="166px">asp:Label>
    
<br />
    
<br />
    输入当前用户名:
<asp:TextBox ID="txtUserName" runat="server" style="margin-bottom: 0px">asp:TextBox>
    
<br />
    
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
        Text
="设置Session["UserName"]" />
    
<br />
div>


using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Xml;
using Microsoft.SharePoint;

namespace WebApp
{
    
public partial class UCDemo : System.Web.UI.UserControl
    {
        
private string app1SiteUrl;
        
private string app1DomainUrl;
        
private string app1WebUrl;
        
private string app2SiteUrl;
        
private string app2DomainUrl;
        
private string app2WebUrl;
        
private string anotherSiteSiteUrl;
        
private string anotherSiteWebUrl;
        
private string anotherSiteDomainUrl;
        
protected void Page_Load(object sender, EventArgs e)
        {
            XmlDocument doc 
= new XmlDocument();
            doc.Load(Server.MapPath(
@"~\wpresources\UCDemo.xml"));
            app1SiteUrl 
= doc.SelectSingleNode("/root/app1/site").Attributes["url"].Value;
            app1DomainUrl
=doc.SelectSingleNode("/root/app1/domain").Attributes["url"].Value;
            app2SiteUrl 
= doc.SelectSingleNode("/root/app2/site").Attributes["url"].Value;
            app2DomainUrl 
= doc.SelectSingleNode("/root/app2/domain").Attributes["url"].Value;
            anotherSiteSiteUrl 
=doc.SelectSingleNode("/root/anotherSite/site").Attributes["url"].Value;
            anotherSiteDomainUrl  
= doc.SelectSingleNode("/root/anotherSite/domain").Attributes["url"].Value;
            
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            
if (Session["UserName"!= null)
            {
                lblUserName.Text 
= (string)Session["UserName"];
            }
            
else
            {
                lblUserName.Text 
= "No Session[\"UserName\"]";
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            
if (!string.IsNullOrEmpty(txtUserName.Text))
            {
                Session[
"UserName"= txtUserName.Text;
            }
        }
        
/// 


        
/// app1's 任务
        
/// 
        
/// 
        
/// 
        protected void Button3_Click(object sender, EventArgs e)
        {
            
using (SPSite site = new SPSite(app1SiteUrl))
            {
                
using (SPWeb web = site.RootWeb)
                {
                    SPList list 
= web.Lists["任务"];

                    DataTable dt = list.Items.GetDataTable();

                    SPGVAPP1.DataSource = dt;
                    SPGVAPP1.DataBind();
                }
            }
        }
/// 


/// app2's task
/// 
/// 
/// 
        protected void Button4_Click(object sender, EventArgs e)
        {
            
using (SPSite site = new SPSite(app2SiteUrl))
            {
                
using (SPWeb web = site.RootWeb)
                {
                    SPList list 
= web.Lists["任务"];

                    DataTable dt = list.Items.GetDataTable();

                    SPGVAPP2.DataSource = dt;
                    SPGVAPP2.DataBind();
                }
            }
        }
        
/// 


        
/// app2's anotherSite的任务
        
/// 
        
/// 
        
/// 
        protected void Button5_Click(object sender, EventArgs e)
        {
            
using (SPSite site = new SPSite(anotherSiteSiteUrl))
            {
                
using (SPWeb web = site.RootWeb)
                {
                    SPList list 
= web.Lists["任务"];

                    DataTable dt = list.Items.GetDataTable();

                    SPGVANOSITE.DataSource = dt;
                    SPGVANOSITE.DataBind();
                }
            }
        }
    }
}


xml version="1.0" encoding="utf-8" ?>
<root>
    
<app1>
        
<site url="http://www.app1.com:8000">site>
        
<domain url="http://www.app1.com:8000">domain>
        
<web url="">web>
    
app1>
    
<app2>
        
<site url="http://www.app1.com:8000">site>
        
<domain url="http://www.app1.com:8000">domain>
        
<web url="">web>
    
app2>
    
<anotherSite>
        
<site url="http://www.app2.com:8001/sites/anotherSite">site>
        
<domain url="http://www.app2.com:8001">domain>
        
<web url="">web>
    
anotherSite>
root>

      

在下面总结了我找到的关于sharepoint开发知识点的博客链接,我会一直不断的更新,如果博客的主人认为有问题的话,可以联系我,谢谢这些博客的主人为大家做的总结。
本文档会一直更新,添加新的博客链接,希望可以给大家一些帮助。
1、WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)

http://www.cnblogs.com/jianyi0115/archive/2008/02/15/1070158.html#1083879

2、WSS3.0开发-过滤列表内容(1)

http://www.cnblogs.com/jianyi0115/archive/2008/02/05/1034505.html

3、这是一篇博客,里面有很多的精彩链接,sql的,设计模式的,反正很多了,就记录了下来
http://www.cnblogs.com/ASPNET2008/archive/2008/12/25/1361167.html

4、一份详尽的IPC$入侵资料

http://www.xfocus.net/articles/200303/493.html

5、开启SharePoint页面的Session功能
http://www.cnblogs.com/zygoses2gether/archive/2006/06/29/438781.html

6、SPSiteDataQuery Samples for WSS v3
http://blog.thekid.me.uk/archive/2007/02/27/spsitedataquery-samples-for-wss-v3.aspx

7、Search results are incomplete when you use a CAML query that uses the SPSiteDataQuery class to search content on a SharePoint Server site or on a Windows SharePoint Services 3.0 site
http://support.microsoft.com/kb/946484/en-us/

8、XML results using SPSiteDataQuery in SharePoint
http://blog.thekid.me.uk/archive/2007/02/25/xml-results-using-spsitedataquery-in-sharepoint.aspx

9、给WSS页面添加访问计数器---太easy,太cool了
http://www.cnblogs.com/jianyi0115/archive/2007/12/18/1005072.html

10、一个非常有用的webpart--文档列表添加文件夹树
http://www.cnblogs.com/jianyi0115/archive/2007/11/19/964848.html

11、moss文档浏览次数统计之兄弟篇--哈哈,列表项的浏览次数统计
http://www.cnblogs.com/jianyi0115/archive/2008/01/08/1029915.html

12、SharePoint 2007中 利用ListViewWebpart 和DataViewWebpart 跨站点 调用列表或者文档库
http://www.cnblogs.com/Jianchidaodi/archive/2008/01/16/1041108.html

13、SharePoint开发中对ListViewWebPart的几个操作
http://www.cnblogs.com/rippleyong/archive/2008/10/28/1321412.html

14、SPGridView 研究笔记 Part 3 - 分组

抱歉!评论已关闭.