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 滚动字幕代码
基本语法:
举例:
文字移动属性的设置:
方向
举例:
direction=left>
direction=right>
循环 :
举例:
速度:
举例:
延时 :
举例:
外观(Layout)设置:
对齐方式(Align)
对齐上沿、中间、下沿。
底色 :
举例:
#=rrggbb 16 进制数码,或者是下列预定义色彩:
Black, Olive, Teal, Red, Blue, Maroon, Navy, Gray, Lime,
Fuchsia, White, Green, Purple, Silver, Yellow, Aqua
面积 :
举例:
啦啦啦,我会移动耶!
啦啦啦,我会移动耶!
空白:(Margins)
举例:
大家好!
2:在DREAMWEAVER这个工具里怎么插入一个打开网叶就自动播放音乐,而且整个过程隐藏的音频播放,如果用 html 代码写怎么写
答:
背景音乐
另及:
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查询变成
<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)不同应用,不同网站集之间获取数据没有问题
上面的都是我用下面这个用户控件检测出来的结果,代码如下
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>
SPGVANOSITE.DataBind();
}
}
}
}
}
在下面总结了我找到的关于sharepoint开发知识点的博客链接,我会一直不断的更新,如果博客的主人认为有问题的话,可以联系我,谢谢这些博客的主人为大家做的总结。
本文档会一直更新,添加新的博客链接,希望可以给大家一些帮助。
1、http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfieldtype.aspx
23、SharePoint,如何在WebPart中访问页面上的其他WebPart
http://soft.zdnet.com.cn/software_zone/2007/1031/595664.shtml
24.、http://www.cnblogs.com/dotnba/archive/2007/11/19/964004.html
25/、 http://www.ondotnet.com/pub/a/dotnet/2005/08/08/localizingaspnet20.html
30、如何最方便的创建SharePoint解决方案包?
http://blog.podlook.com/blog/blog-joycode-com-MainFeed-aspx/104276-aspx.htm
http://www.cnblogs.com/aivdesign/articles/1298952.html
31、http://www.cnblogs.com/lickies/archive/2009/01/22/1379734.html
32、Microsoft 官方 【Web 内容管理 】
http://office.microsoft.com/zh-cn/sharepointserver/CH101785902052.aspx
33、[Best Practice]WSPBuilder和QuickPart合作进行Web Partk可视化开发与部署的好方法
http://blog.joycode.com/ipark/archive/2009/01/16/115436.aspx
34、http://www.colladec.com/
CollaDec,Web部件管理器、事件处理程序管理器、FriendlyQuery类库
38、命令行操作
本主题列出并说明了利用 Stsadm.exe 可执行的操作。有关必选和可选参数以及参数的缩写形式的详细信息,请参阅命令行参数。有关命令行工具使用的详细信息,请参阅“Windows SharePoint Services 管理员指南”中的“Windows SharePoint Services 管理工具简介”。
http://www.suifenhe.gov.cn/_vti_bin/help/2052/sps/html/stsk01.htm#stsk01_createweb
39、Team-Based Development in Microsoft Office SharePoint Server 2007
http://msdn.microsoft.com/en-us/library/bb428899.aspx