开发步骤
-
首先用vs2008创建GetListWebPart的Class Library工程,右击工程属性为工程添加强名,打开工程的AssemblyInfo.cs文件添加 "
using System.Security;" 命名空间与 "[assembly:AllowPartiallyTrustedCallers()]" 二行,为工程添加Microsoft.SharePoint和System.Web的引用.
-
添加文件ListWebPart的代码文件(也就是webpart一,主要用下拉列表列出二个LIST中的ITEM的TITLE),代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
namespace GetListWebPart
{
public class ListWebPart:WebPart
{
protected DropDownList drpdownlist1;
protected DropDownList drpdownlist2;
public ListWebPart()
{
this.ExportMode = WebPartExportMode.All;
}
protected override void CreateChildControls()
{
drpdownlist1 = new DropDownList();
drpdownlist1.ID = "list1";
drpdownlist1.AutoPostBack = true;
drpdownlist1.DataSource = GetListItem("test1 list");
drpdownlist1.DataTextField = "Title";
drpdownlist1.DataValueField = "ID";
drpdownlist1.DataBind();
drpdownlist1.SelectedIndexChanged += new EventHandler(drpdownlist1SelectedIndexChanged);
this.Controls.Add(drpdownlist1);
drpdownlist2 = new DropDownList();
drpdownlist2.ID = "list2";
drpdownlist2.AutoPostBack = true;
drpdownlist2.SelectedIndexChanged += new EventHandler(drpdownlist2_SelectedIndexChanged);
drpdownlist2.DataSource = GetListItem("test2 list");
drpdownlist2.DataTextField = "Title";
drpdownlist2.DataValueField = "ID";
drpdownlist2.DataBind();
this.Controls.Add(drpdownlist2);
ChildControlsCreated = true;
//base.CreateChildControls();
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<table border='1' align='center' cellpadding='2' cellspacing='0' borderColor='gray' width='80%'>");
writer.Write("<tr><td colspan='2' align='center'>Weldon MOSS WebPart</td></tr>");
writer.Write("<tr><td align='center' > test1 list title:");
drpdownlist1.RenderControl(writer);
writer.Write("</td><td align='center'> test2 list title:");
drpdownlist2.RenderControl(writer);
writer.Write("</td></tr></table>");
//base.Render(writer);
}
void drpdownlist2_SelectedIndexChanged(object sender, EventArgs e)
{
//drpdownlist1.Items.Clear();
}
protected SPListItemCollection GetListItem(string listName)
{
//SPSite site = new SPSite("http://www.qsh.com:81/Docs/default.aspx");
SPSite site = SPContext.Current.Site;
SPWeb web = site.OpenWeb("Docs");
SPList list = web.Lists[listName];
SPListItemCollection items = list.Items;
return items;
}
void drpdownlist1SelectedIndexChanged(object sender, EventArgs e)
{
for (int i=0; i < WebPartManager.WebParts.Count; i++)
{
if (WebPartManager.WebParts[i].Title == "ListItemWebPart")
{
ListItemWebPart item = (ListItemWebPart)WebPartManager.WebParts[i];
SPSite site = SPContext.Current.Site;
SPWeb web = site.OpenWeb("Docs");
SPList list = web.Lists["test1 list"];
item.item = list.Items.GetItemById(Convert.ToInt32(drpdownlist1.SelectedValue));
}
}
}
}
}
-
添加ListItemWebPart的代码文件(WEBPART 二,当WEBPRTE 一的下拉选项变化时,负责呈现ITEM的具体信息)代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
namespace GetListWebPart
{
public class ListItemWebPart:WebPart
{
public ListItemWebPart()
{
this.ExportMode = WebPartExportMode.All;
}
private SPListItem _item = null;
public SPListItem item
{
set { _item = value; }
get { return _item; }
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<table border='1' align='center' cellpadding='2' cellspacing='0' borderColor='gray' width='80%'>");
writer.Write("<tr><td colspan='100' align='center'>List Item Detail</td></tr>");
writer.Write("<tr>");
if (item == null)
writer.Write("<td>Please Select List Item in webpart</td>");
else
{
writer.Write("<td>" + item["Title"] + "</td>");
writer.Write("<td>" + item["DropList1"] + "</td>");
writer.Write("<td>" + item["drp2"] + "</td>");
writer.Write("<td>" + item["Created"] + "</td>");
writer.Write("<td>" + item["Author"] + "</td>");
}
writer.Write("</tr></table>");
}
}
}
-
部署
-
项目编译后把DLL放入MOSS站点所在文件夹中
"C:/Inetpub/wwwroot/wss/VirtualDirectories/www.qsh.com81/_app_bin"
-
打开Reflector查看GetListWebPart.dll 的Assembly信息(即Name后的内容)。
![](https://i-blog.csdnimg.cn/blog_migrate/d622f18d97d6fdfda002a296d15cb1af.jpeg)
-
打开MOSS站点的WEB.CONFIG文件添加如下二行配置:
<SafeControl Assembly="GetListWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cbcb1fd6d083e9f7" Namespace="GetListWebPart" TypeName="ListWebPart" Safe="True" />
<SafeControl Assembly="GetListWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cbcb1fd6d083e9f7" Namespace="GetListWebPart" TypeName="ListItemWebPart" Safe="True" />
![](https://i-blog.csdnimg.cn/blog_migrate/5ca63c8a4d73ab81279eeda012b5b60b.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/db7257d905f8a9dcefa080fdae017b09.jpeg)
-
MOSS中添加,如下图:
进入站点设置,点Galleries -> Web Parts
![](https://i-blog.csdnimg.cn/blog_migrate/7f82318522fed9d904d227f0eadfce6a.jpeg)
点NEW.
![](https://i-blog.csdnimg.cn/blog_migrate/c12d4dc3906eac254b9f66672c7b3ec5.jpeg)
选中我们之前创建的二个WEBPART,点Populate Gallery
![](https://i-blog.csdnimg.cn/blog_migrate/dbae07454682898134878b4b504e74b3.jpeg)
返回,成功加入后如下:
![](https://i-blog.csdnimg.cn/blog_migrate/eb969d8045dc91a71552185b1c64cd0f.jpeg)
打开要添加WEBPART的页面,点Edit Page,添加:
![](https://i-blog.csdnimg.cn/blog_migrate/7c0c7679f6cd2cb7044d441fadfb4b77.jpeg)
添加完成后如下:
![](https://i-blog.csdnimg.cn/blog_migrate/fe63123da60fb129013944728e2a8d56.jpeg)