简介
一个WebPart是一个ASP.NET服务器控制用户在运行时添加到Web部件页上的Web部件区域。创建网站使最终用户能够修改的内容,外观和行为直接从浏览器的Web页面,Web部件是一个综合控制。
MOSS 2007中提供了几个基本的WebParts,会做一些有限的功能。 ,如果我们需要一个WebPart有不同的功能,我们必须要在您自己或cannbsp内置的自定义WebPart;被boughtnbsp;从第三方。您建立的WebParts,只要您的需求超过什么是可用的开箱或第三方。
在这篇文章中,我将展示如何编写自定义的WebPart,它是用来连接到一个数据库(SQL)和拉从一个数据库中的数据。创建一个新项目
创建一个在Visual Studio中二千五分之二千八的新的WebPart的项目,如本图所示:{S0}
如果您没有看到您已安装的模板的WebPart,你可能想从为Visual Studio 2008的SharePoint扩展。守则
创建一个从WebPart类继承开始在SharePoint自定义Web部件。所以每当你创建一个新项目,你应该已经注意到,您的类是从这样的WebPart类继承:
声明控件public class DBConnWebPart : System.Web.UI.WebControls.WebParts.WebPart
正确渲染网络的一部分,您需要首先创建任何ASP.NET控件,您将需要在代码中。在这段代码中,我需要一个网格显示我的数据和标签来显示消息。
因此,我声明在类的开始,这些管制措施:{C}创建控件
一旦控件声明,你可以设置它们的属性,并将它们添加到Web部件的Controls集合。您可以通过重写此方法,为每个控件设置属性值,然后将它添加使用CreateChildControls方法。在此方法中,为每个控件设置属性值,然后将它添加到Controls集合,使用此collectionControls.Add方法:
绘图输出protected override void CreateChildControls()
{
//Add grid
grid = new DataGrid();
grid.AutoGenerateColumns = false;
grid.Width = Unit.Percentage(100);
grid.GridLines = GridLines.Horizontal;
grid.CellPadding = 2;
//Add Grid columns
BoundColumn column = new BoundColumn();
column.DataField = "CustomerID";
column.HeaderText = "CustomerID";
grid.Columns.Add(column);
column = new BoundColumn();
column.DataField = "FirstName";
column.HeaderText = "FirstName";
grid.Columns.Add(column);
column = new BoundColumn();
column.DataField = "LastName";
column.HeaderText = "LastName";
grid.Columns.Add(column);
//Adding the Grid to Controls
Controls.Add(grid);
//Add label
messages = new Label();
Controls.Add(messages);
}
一旦控制所有配置,并添加到Web部件,您正在准备提请输出。当渲染的Web部件的用户界面,您可以使用RenderContents方法所提供的HtmlTextWriter类。这个类允许你创建任何HTML输出的WebPart的方式。
我用2008年在SQL AdventureWorksLT数据库的数据拉。我想显示的名字,姓氏和所有客户的最后名称以字母O.中的WebPart的CustomerID
下面是拉输出的代码:
全部放在一起protected override void RenderContents(HtmlTextWriter writer)
{
// Declaring a dataset
DataSet dataSet = null;
// SQL Query
string sql = "select CustomerID,FirstName,LastName from SalesLT.Customer
where FirstName like 'o%'";
//Defining the connection SQL connection string
SqlConnection sqlcon = new SqlConnection("Data Source=SERVER\\SQLEXPRESS05;
Initial Catalog=AdventureWorksLT;Integrated Security=SSPI");
// Pulling the data using try catch block
try
{
sqlcon.Open();
SqlDataAdapter adapter = new SqlDataAdapter(sql, sqlcon);
dataSet = new DataSet("root");
adapter.Fill(dataSet, "sales");
}
catch (SqlException x)
{
messages.Text = x.Message;
}
catch (Exception x)
{
messages.Text += x.Message;
}
//Bind data
try
{
grid.DataSource = dataSet;
grid.DataMember = "sales";
grid.DataBind();
}
catch (Exception x)
{
messages.Text += x.Message;
}
//Display data
writer.Write("<table border=\"0\" width=\"100%\">");
writer.Write("<tr><td>");
grid.RenderControl(writer);
writer.Write("</td></tr>");
writer.Write("<tr><td>");
messages.RenderControl(writer);
writer.Write("</td></tr>");
writer.Write("</table>");
}
结论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.Web;
using System.Drawing;
using System.Data;
using System.Data.SqlClient;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
namespace DatabaseConnWebPart
{
[Guid("426cc33f-fd12-432e-91e9-fa48f36e82bf")]
public class DBConnWebPart : System.Web.UI.WebControls.WebParts.WebPart
{
DataGrid grid;
Label messages;
protected override void CreateChildControls()
{
//Add grid
grid = new DataGrid();
grid.AutoGenerateColumns = false;
grid.Width = Unit.Percentage(100);
grid.GridLines = GridLines.Horizontal;
grid.HeaderStyle.CssClass = "ms-vh2";
grid.CellPadding = 2;
//Add Grid columns
BoundColumn column = new BoundColumn();
column.DataField = "CustomerID";
column.HeaderText = "CustomerID";
grid.Columns.Add(column);
column = new BoundColumn();
column.DataField = "FirstName";
column.HeaderText = "FirstName";
grid.Columns.Add(column);
column = new BoundColumn();
column.DataField = "LastName";
column.HeaderText = "LastName";
grid.Columns.Add(column);
// Adding the Grid to Controls
Controls.Add(grid);
//Add label
messages = new Label();
Controls.Add(messages);
}
protected override void RenderContents(HtmlTextWriter writer)
{
// Declaring a dataset
DataSet dataSet = null;
// SQL connection string.
string sql = "select CustomerID,FirstName,
LastName from SalesLT.Customer where FirstName like 'o%'";
//Get data
SqlConnection sqlcon = new SqlConnection("Data Source=SERVER\\SQLEXPRESS05;
Initial Catalog=AdventureWorksLT;Integrated Security=SSPI");
try
{
sqlcon.Open();
SqlDataAdapter adapter = new SqlDataAdapter(sql, sqlcon);
dataSet = new DataSet("root");
adapter.Fill(dataSet, "sales");
}
catch (SqlException x)
{
messages.Text = x.Message;
}
catch (Exception x)
{
messages.Text += x.Message;
}
//Bind data
try
{
grid.DataSource = dataSet;
grid.DataMember = "sales";
grid.DataBind();
}
catch (Exception x)
{
messages.Text += x.Message;
}
//Display data
writer.Write("<table border=\"0\" width=\"100%\">");
writer.Write("<tr><td>");
grid.RenderControl(writer);
writer.Write("</td></tr>");
writer.Write("<tr><td>");
messages.RenderControl(writer);
writer.Write("</td></tr>");
writer.Write("</table>");
}
}
}
就是这样!!!!!现在,我们已经成功地创建一个自定义的WebPart与SQL数据库交互和拉,我们需要的记录。所以,在所有的,只有三个要点:声明控件创建控件的CreateChildControls方法重载拉输出压倒一切的RenderContents方法部署到SharePoint的WebPart
现在,我们有我们的手的自定义WebPart,我们可以此的WebPart部署到SharePoint,并用它。我将讨论如何部署的WebPart到SharePoint {A2}本文详细。历史3月5日,2009年:战后初期