WSS3SDK之:如何从列表中获取数据
如果要从列表中取数据,我们可以从实例化SPWeb开始深入,通过对象模型得到列表的SPListItemCollection。您返回后,当我们得到所有列表项目的集合后,可以通过迭代遍历整个集合,并使用索引(indexer)返回特定字段(或叫做栏,field)的值。
下面的例子返回指定事件列表的所有项。它假定存在一个文本框,可以用来输入事件列表的名称。
VB
C#
在例子中,索引既用在返回用户指定的列表,又用于返回列表中特定的项。为了返回该项目, indexers必须指定每一栏的名称,来得到对应栏的值。在本例中,所有的栏名称来自一个普通的事件列表。
您也可以使用SPList类的GetItems方法返回的某列表的数据项的一个子集。下面的例子只返回Stock栏的值超过100 的标题栏的内容。
VB
C#
该例子假设存在一个Books列表,包含了一个名为Stock的列,类型为数值。
前面的示例使用构造器实例化了一个SPQuery对象。然后为query对象的Query属性指定了一个协同应用标记语言核心架构(CAML,Collaborative Application Markup Language Core Schemas)格式的字符串,指定query的XML内容(换句话说,就是Where元素)。然后,query对象将传递给在GetItems方法,来返回和显示列表项。
跨列表查询
您可以执行跨列表查询来使查询更有效率,跨越多个网站获取数据。以下示例使用SPSiteDataQuery类来定义查询,然后使用GetSiteData方法返回所有Status栏的值等于“Completed” 的列表项。
VB
C#
下面的例子返回指定事件列表的所有项。它假定存在一个文本框,可以用来输入事件列表的名称。
VB
Dim mySite As SPWeb = SPContext.Current.Web
Dim listItems As SPListItemCollection = mySite.Lists(TextBox1.Text).Items
Dim i As Integer
For i = 0 To listItems.Count - 1
Dim item As SPListItem = listItems(i)
Response.Write(SPEncode.HtmlEncode(item("Title").ToString()) & " :: " _
& SPEncode.HtmlEncode(item("Location").ToString()) & " :: " _
& SPEncode.HtmlEncode(item("Begin").ToString()) & " :: " _
& SPEncode.HtmlEncode(item("End").ToString()) & "<BR>")
Next i
Dim listItems As SPListItemCollection = mySite.Lists(TextBox1.Text).Items
Dim i As Integer
For i = 0 To listItems.Count - 1
Dim item As SPListItem = listItems(i)
Response.Write(SPEncode.HtmlEncode(item("Title").ToString()) & " :: " _
& SPEncode.HtmlEncode(item("Location").ToString()) & " :: " _
& SPEncode.HtmlEncode(item("Begin").ToString()) & " :: " _
& SPEncode.HtmlEncode(item("End").ToString()) & "<BR>")
Next i
C#
SPWeb mySite = SPContext.Current.Web;
SPListItemCollection listItems = mySite.Lists[TextBox1.Text].Items;
for (int i=0;i<listItems.Count;i++)
{
SPListItem item = listItems[i];
Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + " : " +
SPEncode.HtmlEncode(item["Location"].ToString()) + " : " +
SPEncode.HtmlEncode(item["Begin"].ToString()) + " : " +
SPEncode.HtmlEncode(item["End"].ToString()) + "<BR>");
}
上面的例子需要引用Microsoft.SharePoint和Microsoft.SharePoint.Utilities命名空间。SPListItemCollection listItems = mySite.Lists[TextBox1.Text].Items;
for (int i=0;i<listItems.Count;i++)
{
SPListItem item = listItems[i];
Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + " : " +
SPEncode.HtmlEncode(item["Location"].ToString()) + " : " +
SPEncode.HtmlEncode(item["Begin"].ToString()) + " : " +
SPEncode.HtmlEncode(item["End"].ToString()) + "<BR>");
}
在例子中,索引既用在返回用户指定的列表,又用于返回列表中特定的项。为了返回该项目, indexers必须指定每一栏的名称,来得到对应栏的值。在本例中,所有的栏名称来自一个普通的事件列表。
您也可以使用SPList类的GetItems方法返回的某列表的数据项的一个子集。下面的例子只返回Stock栏的值超过100 的标题栏的内容。
VB
Dim mySite As SPWeb = SPContext.Current.Web
Dim list As SPList = mySite.Lists("Books")
Dim query As New SPQuery()
query.Query = "<Where><Gt><FieldRef Name='Stock'/><Value Type='Number'>100</Value></Gt></Where>"
Dim myItems As SPListItemCollection = list.GetItems(query)
Dim item As SPListItem
For Each item In myItems
Response.Write(SPEncode.HtmlEncode(item("Title").ToString()) & "<BR>")
Next item
Dim list As SPList = mySite.Lists("Books")
Dim query As New SPQuery()
query.Query = "<Where><Gt><FieldRef Name='Stock'/><Value Type='Number'>100</Value></Gt></Where>"
Dim myItems As SPListItemCollection = list.GetItems(query)
Dim item As SPListItem
For Each item In myItems
Response.Write(SPEncode.HtmlEncode(item("Title").ToString()) & "<BR>")
Next item
C#
SPWeb mySite = SPContext.Current.Web;
SPList list = mySite.Lists["Books"];
SPQuery query = new SPQuery();
query.Query = "<Where><Gt><FieldRef Name='Stock'/><Value Type='Number'>100</Value></Gt></Where>";
SPListItemCollection myItems = list.GetItems(query);
foreach (SPListItem item in myItems)
{
Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + "<BR>");
}
上面的例子需要引用Microsoft.SharePoint和Microsoft.SharePoint.Utilities命名空间。SPList list = mySite.Lists["Books"];
SPQuery query = new SPQuery();
query.Query = "<Where><Gt><FieldRef Name='Stock'/><Value Type='Number'>100</Value></Gt></Where>";
SPListItemCollection myItems = list.GetItems(query);
foreach (SPListItem item in myItems)
{
Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + "<BR>");
}
该例子假设存在一个Books列表,包含了一个名为Stock的列,类型为数值。
前面的示例使用构造器实例化了一个SPQuery对象。然后为query对象的Query属性指定了一个协同应用标记语言核心架构(CAML,Collaborative Application Markup Language Core Schemas)格式的字符串,指定query的XML内容(换句话说,就是Where元素)。然后,query对象将传递给在GetItems方法,来返回和显示列表项。
跨列表查询
您可以执行跨列表查询来使查询更有效率,跨越多个网站获取数据。以下示例使用SPSiteDataQuery类来定义查询,然后使用GetSiteData方法返回所有Status栏的值等于“Completed” 的列表项。
VB
Dim webSite As SPWeb = SPContext.Current.Web
Dim query As New SPSiteDataQuery()
query.Lists = "<Lists ServerTemplate=""107"" />"
query.Query = "<Where><Eq><FieldRef Name=""Status""/>" + "<Value Type=""Text"">Completed</Value></Eq></Where>"
Dim items As System.Data.DataTable = webSite.GetSiteData(query)
Dim item As System.Data.DataRow
For Each item In items
Response.Write((SPEncode.HtmlEncode(item("Title").ToString()) + "<BR>"))
Next item
Dim query As New SPSiteDataQuery()
query.Lists = "<Lists ServerTemplate=""107"" />"
query.Query = "<Where><Eq><FieldRef Name=""Status""/>" + "<Value Type=""Text"">Completed</Value></Eq></Where>"
Dim items As System.Data.DataTable = webSite.GetSiteData(query)
Dim item As System.Data.DataRow
For Each item In items
Response.Write((SPEncode.HtmlEncode(item("Title").ToString()) + "<BR>"))
Next item
C#
SPWeb webSite = SPContext.Current.Web;
SPSiteDataQuery query = new SPSiteDataQuery();
query.Lists = "<Lists ServerTemplate=\"107\" />";
query.Query =
"<Where><Eq><FieldRef Name=\"Status\"/>" +
"<Value Type=\"Text\">Completed</Value></Eq></Where>";
System.Data.DataTable items = webSite.GetSiteData(query);
foreach (System.Data.DataRow item in items)
{
Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + "<BR>");
}
上面的例子需要引用Microsoft.SharePoint和Microsoft.SharePoint.Utilities命名空间。SPSiteDataQuery query = new SPSiteDataQuery();
query.Lists = "<Lists ServerTemplate=\"107\" />";
query.Query =
"<Where><Eq><FieldRef Name=\"Status\"/>" +
"<Value Type=\"Text\">Completed</Value></Eq></Where>";
System.Data.DataTable items = webSite.GetSiteData(query);
foreach (System.Data.DataRow item in items)
{
Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + "<BR>");
}
分类:
SharePoint
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2007-06-20 MSDN Visual系列:在MOSS中为Excel Services编写托管代码形式的用户定义函数