返回首页

简介
一个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年:战后初期

回答

评论会员:会员4351644 时间:2012/01/24
很好的解释,对于初学者
例如
评论会员:mgorle 时间:2012/01/24
这真是救了我的时间。谢谢
MG
评论会员:。Berdia 时间:2012/01/24
优秀文章!伟大的解决方案!
谢谢。
只是想以检查它是否是可以做到的列表,这是从SQL数据库检索寻呼的。如果我有1000条记录的列表,它使页面很长。

请让我知道如果有可能,以及如何的。

谢谢。

Berdia
评论会员:。vcarnei 时间:2012/01/24
您的文章,帮助我快速的SQL连接的WebPart我正在

评论会员:会员2472858 时间:2012/01/24
考虑穷人的内容
评论会员:Berdia 时间:2012/01/24
我跟着正是因为你在part1和part2中提到的。但是,当我去到SharePoint网站添加的WebPart,我看不出这的WebPart。我看只有那些与WSS安装了。你在这篇文章中的任何?我觉得第二部分是从细节丢失。

请咨询
评论会员:Sohel_Rana 时间:2012/01/24
它为我工作的罚款。

确保你第一次生成,然后从Visual Studio部署。

薪酬从WSS部署注意当你去到网站设置网站零部件新的
评论会员:。Hithendra雷迪 时间:2012/01/24
asp.net的WebPart中的SharePoint开发是费时和无效。而不是建立在WebPart控件,您可以创建一个asp.net用户控制和负载网络的一部分,在。你也可以使用像工具Smartpart,使您的开发速度更快
评论会员:。 时间:2012/01/24