使用C#如何访问SharePoint网站上的列表
2011-08-19 19:25
776 查看
在C#中可以通过Web Service的方式访问SharePoint网站,从而获取到SharePoint网站上的相关列表中的数据,具体操作如下(本文在VS2005中测试通过)
1. 打开VS2005,新建一个控制台程序
2. 添加Web Service服务的引用,SharePoint中列表的Web Service一般地址为"http://server-name/_vti_bin/Lists.asmx",其中的server-name为SharePoint网站所在的服务器的名称或者IP地址,添加后,将Web Service的名称命名为WebListService
3. 在项目中添加以下using的引用
5. 编写获取列表中的Item内容,返回的将是XMLNode格式的内容
static XmlNode GetListItems(WebListService.Lists webLists, string listName)
{
XmlNode xmlNode = null;
if (listName == null)
{
return null;
}
try
{
//第一个参数为列表的GUID
//第二个参数为列表视图的GUID,如果为空,表示查询的是默认视图
xmlNode = webLists.GetListItems(listName, null, null, null, null, null, null);
}
catch (System.Exception ex)
{
Console.WriteLine("Error Msg: \n" + ex.Message);
}
return xmlNode;
} 6. 编写分析XMLNode的函数,并取得想要得数据
static void FindWebNewItem()
{
while (true)
{
WebListService.Lists webLists = GetWebLists();
string listName = "{A3E153B3-CF7A-4782-831E-FAB7AFD4FAEF}";
XmlNode xmlNode = GetListItems(webLists, listName);
string listTitle = null;
foreach (XmlNode node in xmlNode)
{
if (node.Attributes != null)
{
listTitle = xmlNode.OuterXml;
XmlDocument doc = new XmlDocument();
doc.LoadXml(listTitle);
doc.Save(Directory.GetCurrentDirectory() + "\\item.xml");
XmlReader xr = XmlReader.Create(Directory.GetCurrentDirectory() + "\\item.xml");
while (xr.Read())
{
if (xr.LocalName == "row")
{
//获取相应的属性,根据实际情况进行修改
string strID = xr.GetAttribute("ows_FileRef");
string strTitle = xr.GetAttribute("ows_LinkTitle");
string strUser = xr.GetAttribute("ows_AssignedTo");
if (strUser != "")
{
continue;
}
//如果发现有新的问题,则弹出一个对话框,在上面填上指向该问题的网址
Form msg = new Form();
msg.Text = "发现新的问题...";
msg.Width = 500;
msg.Height = 130;
msg.StartPosition = FormStartPosition.CenterScreen;
Label lbTitle = new Label();
lbTitle.Text = "标题: " + strTitle;
lbTitle.Left = 10;
lbTitle.Top = 10;
lbTitle.Width = 450;
lbTitle.Visible = true;
msg.Controls.Add(lbTitle);
LinkLabel llHttpAddress = new LinkLabel();
llHttpAddress.Text = "http://server-name/support/Lists/List/DispForm.aspx?ID=" + strID.Substring(0, strID.IndexOf(';', 0));
llHttpAddress.Left = 10;
llHttpAddress.Top = 40;
llHttpAddress.Width = 450;
llHttpAddress.Visible = true;
llHttpAddress.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(lblHttp_LinkClicked);
msg.Controls.Add(llHttpAddress);
msg.ShowDialog();
}
}
}
}
Thread.Sleep(1000*60);
}
} 7. 添加响应第6步操作中的LinkLabel的鼠标单击响应函数
static private void lblHttp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
LinkLabel llHttpAddress = (LinkLabel)sender;
System.Diagnostics.Process.Start(llHttpAddress.Text);
Form form = (Form)llHttpAddress.Parent;
form.Close();
} 8. 编写Main函数
static void Main(string[] args)
{
ThreadStart ts = new ThreadStart(FindWebNewItem);
Thread th = new Thread(ts);
th.Start();
Console.ReadLine();
} 9. 到此,就可以查询相应的数据内容了,是不是很简单?哈哈
1. 打开VS2005,新建一个控制台程序
2. 添加Web Service服务的引用,SharePoint中列表的Web Service一般地址为"http://server-name/_vti_bin/Lists.asmx",其中的server-name为SharePoint网站所在的服务器的名称或者IP地址,添加后,将Web Service的名称命名为WebListService
3. 在项目中添加以下using的引用
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; using System.Xml; using System.Windows.Forms; using System.Drawing; using System.Web; using System.Threading;4. 编写连接SharePoint服务器的访问代码
static WebListService.Lists GetWebLists() { //初始化Lists类 WebListService.Lists webLists = new WebListService.Lists(); //设置用户名,密码 //这里面需要设置服务器管理员的密码以提升权限,否则会返回401错误 NetworkCredential ntc = new NetworkCredential("administrator", "pin"); //设置webLists的用户名,密码 webLists.Credentials = ntc; //设置URL webLists.Url = "http://server-name/_vti_bin/Lists.asmx"; //返回Lists类 return webLists; }
5. 编写获取列表中的Item内容,返回的将是XMLNode格式的内容
static XmlNode GetListItems(WebListService.Lists webLists, string listName)
{
XmlNode xmlNode = null;
if (listName == null)
{
return null;
}
try
{
//第一个参数为列表的GUID
//第二个参数为列表视图的GUID,如果为空,表示查询的是默认视图
xmlNode = webLists.GetListItems(listName, null, null, null, null, null, null);
}
catch (System.Exception ex)
{
Console.WriteLine("Error Msg: \n" + ex.Message);
}
return xmlNode;
} 6. 编写分析XMLNode的函数,并取得想要得数据
static void FindWebNewItem()
{
while (true)
{
WebListService.Lists webLists = GetWebLists();
string listName = "{A3E153B3-CF7A-4782-831E-FAB7AFD4FAEF}";
XmlNode xmlNode = GetListItems(webLists, listName);
string listTitle = null;
foreach (XmlNode node in xmlNode)
{
if (node.Attributes != null)
{
listTitle = xmlNode.OuterXml;
XmlDocument doc = new XmlDocument();
doc.LoadXml(listTitle);
doc.Save(Directory.GetCurrentDirectory() + "\\item.xml");
XmlReader xr = XmlReader.Create(Directory.GetCurrentDirectory() + "\\item.xml");
while (xr.Read())
{
if (xr.LocalName == "row")
{
//获取相应的属性,根据实际情况进行修改
string strID = xr.GetAttribute("ows_FileRef");
string strTitle = xr.GetAttribute("ows_LinkTitle");
string strUser = xr.GetAttribute("ows_AssignedTo");
if (strUser != "")
{
continue;
}
//如果发现有新的问题,则弹出一个对话框,在上面填上指向该问题的网址
Form msg = new Form();
msg.Text = "发现新的问题...";
msg.Width = 500;
msg.Height = 130;
msg.StartPosition = FormStartPosition.CenterScreen;
Label lbTitle = new Label();
lbTitle.Text = "标题: " + strTitle;
lbTitle.Left = 10;
lbTitle.Top = 10;
lbTitle.Width = 450;
lbTitle.Visible = true;
msg.Controls.Add(lbTitle);
LinkLabel llHttpAddress = new LinkLabel();
llHttpAddress.Text = "http://server-name/support/Lists/List/DispForm.aspx?ID=" + strID.Substring(0, strID.IndexOf(';', 0));
llHttpAddress.Left = 10;
llHttpAddress.Top = 40;
llHttpAddress.Width = 450;
llHttpAddress.Visible = true;
llHttpAddress.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(lblHttp_LinkClicked);
msg.Controls.Add(llHttpAddress);
msg.ShowDialog();
}
}
}
}
Thread.Sleep(1000*60);
}
} 7. 添加响应第6步操作中的LinkLabel的鼠标单击响应函数
static private void lblHttp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
LinkLabel llHttpAddress = (LinkLabel)sender;
System.Diagnostics.Process.Start(llHttpAddress.Text);
Form form = (Form)llHttpAddress.Parent;
form.Close();
} 8. 编写Main函数
static void Main(string[] args)
{
ThreadStart ts = new ThreadStart(FindWebNewItem);
Thread th = new Thread(ts);
th.Start();
Console.ReadLine();
} 9. 到此,就可以查询相应的数据内容了,是不是很简单?哈哈
相关文章推荐
- 在C#开发中如何使用Client Object Model客户端代码获得SharePoint 网站、列表的权限情况
- 如何使用python逆向访问列表
- 在asp.net里使用指定的用户运行访问Sharepoint网站的代码
- 元旦快乐,阖家团圆,幸福安康.C#重载示例(有问重载该如何选择?在C#中可很方便地在智能感知弹出中选择不同参数列表进行使用;不像C/C++那样,要记住编译器自动选择最佳匹配参数列表的概念)
- sharepoint 2016 学习系列篇(7)-如何给网站分配用户访问权限site permission for users
- 如何使用Cisco命令阻止访问特定网站
- Sharepoint共享文档库,如何通过Event Handler实现跨网站访问
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 2)
- C# 程序中如何向(DEV)ComboBoxEdit控件中添加下拉列表的值不使用数据绑定,就是使用代码添加
- 如何解决用户添加到AD Group仍然无法访问SharePoint网站的问题?
- 如何:使用 foreach 访问集合类(C# 编程指南)
- 如何嵌入并使用 C# 来访问资源
- 如何使用Cisco命令阻止访问特定网站
- 如何在Javascript里访问SharePoint列表数据
- [PHP]如何使用Mobile_Detect来判断访问网站的设备:安卓,平板,电脑
- 使用路由器和花生壳如何在个人电脑上架构网站,通过域名访问 - 待整理
- 使用C#的HttpWebRequest访问网站
- MOSS 2010:Visual Studio 2010开发体验(20)——使用ADO.NET Data Service快速访问SharePoint列表数据
- c#,sharepoint,2007,moss,spsitedataquery,跨列表查询,跨网站查询,join,联合查询
- 在Sharepoint中如何共享其他网站中的列表?