自写了一个WebPart 用DataRead列出数据,准备
部署在SharePoint服务器上,想想很容易,一路顺利,可是将导入的WebPart拽到页面时,出来这个错误:
An Error has occurred: Request for the permission of type System.Data.SqlClient.SqlClientPermission, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 failed.
看来WebPart访问SQL有问题:
于是。在WSS的webConfig文件中添加下列两行:
<
SafeControlAssembly
=
"
System.Data,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
"
Namespace
=
"
System.Data.SqlClient
"
TypeName
=
"
*
"
Safe
=
"
True
"
/>
<
SafeControlAssembly
=
"
System.Data,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
"
Namespace
=
"
System.Data
"
TypeName
=
"
*
"
Safe
=
"
True
"
/>
还是不行,
又在C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/60/config/wss_minimaltrust.config文件中添加下面一行:
<
SecurityClassName
=
"
SqlClientPermission
"
Description
=
"
System.Data.SqlClient.SqlClientPermission,System.Data,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
"
/>
服务器 iisreset后 还是不行!
这可怪了! 再到服务器上一看,原来数据库采用Windows身份验证模式,而不是混合验证模式
于是,再次将服务器上的ASPNET帐号户设置为所有数据库访问权
还是不行
怀疑是.net运行权限不够
再次在服务器中"信任程序集",将服务器上的System.dll的程序集权限设主完全信任!
还是不行!我晕
再捍源码中连接串如下:
"Data Source=sp-hgh;Initial Catalog=NorthWind;uid-sa;pwd=;"
马上改为:
"Data Source=sp-hgh;Initial Catalog=NorthWind;Integrated Security=SSPI;Trusted_Connection=yes;"
结果还是出不来数据
唉!整个一郁闷
最后捍了XGP的文章《[url=http://xgp1226.blogdriver.com/xgp1226/598244.html]Web部件访问SQL数据库--寻找收获的快乐[/url]》一文,深受启发,又参考MSDN文档,终于成功!
方法:
然后在wss_minimaltrust.config文件(在Webconfig文件中查找文件的位置)的<SecurityClass>节点中加入子节点:
<
SecurityClassName
=
"
SqlClientPermission
"
Description
=
"
System.Data.SqlClient.SqlClientPermission,System.Data,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
"
/>
,
<
SecurityClassName
=
"
SharePointPermission
"
Description
=
"
Microsoft.SharePoint.Security.SharePointPermission,Microsoft.SharePoint.Security,Version=11.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c
"
/>
再在ASP.net(注意必须)的<PermissionSet>节点中加入子节点:
<
IPermission
class
=
"
SqlClientPermission
"
version
=
"
1
"
Unrestricted
=
"
true
"
/>
<
IPermission
class
=
"
SharePointPermission
"
version
=
"
1
"
ObjectModel
=
"
True
"
/>
再重启IIS
iisreset 后, 一切OK!
我的源码如下:
using
System;
using
System.ComponentModel;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Xml.Serialization;
using
Microsoft.SharePoint;
using
Microsoft.SharePoint.Utilities;
using
Microsoft.SharePoint.WebPartPages;
using
System.Data;
using
System.Data.SqlClient;
namespace
NewDispData
...
{
/**/
///
<summary>
///
DescriptionforWebPart1.
///
</summary>
[DefaultProperty(
"
Text
"
),
ToolboxData(
"
<{0}:WebPart1runat=server></{0}:WebPart1>
"
),
XmlRoot(Namespace
=
"
NewDispData
"
)]
public
class
NewDispData:Microsoft.SharePoint.WebPartPages.WebPart
//
,ICellConsumer
//
,IRowProvider
...
{
webPart变量
#region
webPart变量
private
const
string
defaultText
=
""
;
private
string
text
=
defaultText;
[Browsable(
true
),
Category(
"
Miscellaneous
"
),
DefaultValue(defaultText),
WebPartStorage(Storage.Personal),
FriendlyName(
"
Text
"
),
Description(
"
TextProperty
"
)]
public
string
Text
...
{
get
...
{
return
text;
}
set
...
{
text
=
value;
}
}
const
string
connectionStr
=
"
server=downmoon-hgh;database=NorthWind;uid=sa;pwd=sa;
"
;
//
protected
LabelErrorLabel;
protected
DataGridOrdersGrid;
SqlConnectionNorthWindConnection
=
new
SqlConnection(connectionStr);
SqlDataAdapterNorthWindAdp
=
null
;
DataSetNorthWindDataSet
=
null
;
private
int
_connectionCount
=
1
;
#endregion
创建子控件
#region
创建子控件
protected
override
void
CreateChildControls()
...
{
//
Thislabelisdisplayedonlyif
//
anexceptionisthrownwhileattempting
//
toloadthedata.
ErrorLabel
=
new
Label();
ErrorLabel.Visible
=
false
;
Controls.Add(ErrorLabel);
//
Createthedatagrid
OrdersGrid
=
new
DataGrid();
BoundColumnnewColumn;
OrdersGrid.Load
+=
new
EventHandler(OrdersLoad);
OrdersGrid.AllowPaging
=
false
;
OrdersGrid.HeaderStyle.Font.Bold
=
true
;
OrdersGrid.HeaderStyle.Wrap
=
false
;
OrdersGrid.GridLines
=
System.Web.UI.WebControls.GridLines.Both;
OrdersGrid.AutoGenerateColumns
=
false
;
//
Definegridcolumns
newColumn
=
new
BoundColumn();
newColumn.DataField
=
"
OrderID
"
;
newColumn.HeaderText
=
"
OrderID
"
;
newColumn.ItemStyle.HorizontalAlign
=
HorizontalAlign.Right;
OrdersGrid.Columns.Add(newColumn);
newColumn
=
new
BoundColumn();
newColumn.DataField
=
"
CustomerID
"
;
newColumn.HeaderText
=
"
CustomerID
"
;
OrdersGrid.Columns.Add(newColumn);
newColumn
=
new
BoundColumn();
newColumn.DataField
=
"
OrderDate
"
;
newColumn.HeaderText
=
"
OrderDate
"
;
newColumn.DataFormatString
=
"
{0:d}
"
;
newColumn.ItemStyle.HorizontalAlign
=
HorizontalAlign.Right;
OrdersGrid.Columns.Add(newColumn);
newColumn
=
new
BoundColumn();
newColumn.DataField
=
"
RequiredDate
"
;
newColumn.HeaderText
=
"
RequiredDate
"
;
newColumn.DataFormatString
=
"
{0:d}
"
;
newColumn.ItemStyle.HorizontalAlign
=
HorizontalAlign.Right;
OrdersGrid.Columns.Add(newColumn);
newColumn
=
new
BoundColumn();
newColumn.DataField
=
"
ShippedDate
"
;
newColumn.HeaderText
=
"
ShippedDate
"
;
newColumn.DataFormatString
=
"
{0:d}
"
;
newColumn.ItemStyle.HorizontalAlign
=
HorizontalAlign.Right;
OrdersGrid.Columns.Add(newColumn);
newColumn
=
new
BoundColumn();
newColumn.DataField
=
"
Freight
"
;
newColumn.HeaderText
=
"
FreightCost
"
;
newColumn.DataFormatString
=
"
{0:c}
"
;
newColumn.ItemStyle.HorizontalAlign
=
HorizontalAlign.Right;
OrdersGrid.Columns.Add(newColumn);
Controls.Add(OrdersGrid);
}
/**/
///
<summary>
///
OrdersLoad
///
handlesOrdersGrid.Load.
///
</summary>
///
public
void
OrdersLoad(
object
sender,EventArgse)
...
{
BindGrid();
}
private
void
BindGrid()
...
{
//
LoadschemaanddataintoaDataSet.
DataSetordersSet
=
new
DataSet();
//
AssumeXMLdatafileisinthewpresourcesfolder.
//
IfFileI/Opermissionsarenotavailable,
//
thefollowingwillthrowasecurityexception.
try
...
{
NorthWindConnection.Open();
string
sqlSelectStr
=
"
select*fromOrders
"
;
NorthWindAdp
=
new
SqlDataAdapter(sqlSelectStr,NorthWindConnection);
NorthWindDataSet
=
new
DataSet();
NorthWindAdp.Fill(NorthWindDataSet,
"
Orders
"
);
NorthWindConnection.Close();
}
catch
(Exceptionex)
...
{
ErrorLabel.Text
=
ex.Message
+
"
<br>
"
+
"
Stepstocorrectthisareincludedin
"
+
"
thedocumentationforthissample.
"
;
ErrorLabel.Visible
=
true
;
return
;
}
finally
...
{
NorthWindConnection
=
null
;
NorthWindAdp
=
null
;
}
//
Noerrorifwemadeitthisfar.
ErrorLabel.Visible
=
false
;
//
UseaDataViewtofilterorders.
string
rowFilter
=
""
;
/**/
///
/if(CustomerId!="")
///
/{
///
/rowFilter="CustomerID='"+CustomerId+"'";
///
/}
///
/if(CustomerId!="")
///
/{
///
/rowFilter="CustomerID='"+"CHOPS"+"'";
///
/}
DataViewordersView
=
new
DataView(NorthWindDataSet.Tables[
"
Orders
"
]);
/**/
///
/ordersView.RowFilter=rowFilter;
OrdersGrid.Enabled
=
true
;
OrdersGrid.DataSource
=
ordersView;
OrdersGrid.DataBind();
}
#endregion
/**/
///
<summary>
///
RenderthisWebParttotheoutputparameterspecified.
///
</summary>
///
<paramname="output">
TheHTMLwritertowriteoutto
</param>
protected
override
void
RenderWebPart(HtmlTextWriteroutput)
...
{
//
output.Write(SPEncode.HtmlEncode(Text));
EnsureChildControls();
if
(ErrorLabel.Visible
==
true
)
...
{
ErrorLabel.RenderControl(output);
return
;
}
//
Ifconnectedthendisplayaheadingandthegrid.
if
(_connectionCount
>
0
)
...
{
output.RenderBeginTag(
"
div
"
);
output.Write(
"
<br>
"
);
output.AddStyleAttribute(HtmlTextWriterStyle.FontWeight,
"
bold
"
);
output.RenderBeginTag(HtmlTextWriterTag.Span);
/**/
///
/output.Write("
<nobr>
OrdersforCustomerID:"
///
/+System.Web.HttpUtility.HtmlEncode(CustomerId)+"
</nobr>
");
output.RenderEndTag();
//
span
output.Write(
"
<br>
"
);
output.Write(
"
<br>
"
);
OrdersGrid.RenderControl(output);
output.RenderEndTag();
//
div
}
if
(_connectionCount
>
0
)
...
{
output.RenderBeginTag(
"
div
"
);
output.Write(
"
<br>
"
);
output.AddStyleAttribute(HtmlTextWriterStyle.FontWeight,
"
bold
"
);
output.AddStyleAttribute(HtmlTextWriterStyle.Color,
"
#000000
"
);
output.RenderBeginTag(HtmlTextWriterTag.Span);
/**/
///
/output.Write("
<nobr>
OrdersforCustomerID:"
///
/+System.Web.HttpUtility.HtmlEncode(CustomerId));
///
/output.Write("
</nobr>
");
output.RenderEndTag();
//
span
BindGrid();
OrdersGrid.RenderControl(output);
output.RenderEndTag();
//
div
}
}
}
分享到:
相关推荐
本教程包含的可能章节可能包括:WebPart概述、WebPart开发环境搭建、WebPart基础类、WebPart设计与实现、WebPart连接、WebPart权限管理、Visual WebPart开发、WebPart调试与部署等。每章节都会通过实例来讲解相关...
WebPart开发还涉及数据绑定和用户交互的设计。通过使用ASP.NET的数据绑定控件,如GridView、ListView等,WebPart可以轻松地从数据库或其他数据源中获取并显示数据。此外,JavaScript和AJAX技术的应用使得WebPart能够...
- "WalkThrough-WebPart2.ppt"可能深入到WebPart的编程模型,包括事件处理和数据绑定。 - "WalkThrough-WebPart3.ppt"可能讲解WebPart的连接性和协作功能。 - "WalkThrough-WebPart4.ppt"可能涉及WebPart的权限...
视图定义了WebPart如何呈现数据,属性允许用户配置WebPart的行为,而连接选项则让WebParts之间能够交换信息。 在SharePoint中,WebPart开发通常涉及以下步骤: 1. **创建WebPart类**:使用C#或VB.NET,在Visual ...
1. **数据展示**: 从各种数据源(如SQL Server、Excel)拉取数据并展示。 2. **协作工具**: 如日历、任务列表,促进团队协作。 3. **集成外部系统**: 通过Web服务或API与其他系统集成。 4. **自定义功能**: 实现特定...
字段类型如描述中提到的,可以用Image存储序列化的WebPart对象,或者用Ntext存储XML格式的布局数据。 实现这个功能需要以下步骤: 1. **创建WebPartZone**:WebPartZone是WebPart管理的基础,它定义了一个区域,...
在SharePoint中,WebPart被设计为一个容器,用于展示各种类型的数据和功能,如新闻、文档库、日历、搜索框等。每个WebPart都有自己的属性和方法,可以通过WebPart工具面板进行配置,以改变其显示方式和行为。 **...
学习使用Visual Studio来创建和调试WebPart,以及如何配置WebPart属性和连接WebPart之间的数据流;此外,还会涉及到SharePoint的WebPart Zones、WebPart Connections和WebPart Pages等相关知识。 通过实践这些教程...
WebPart连接允许两个或更多WebPart之间交换数据,形成更复杂的工作流程。例如,一个搜索WebPart可以将结果显示到一个列表WebPart中。 **6. WebPart开发** 开发自定义WebPart通常涉及以下步骤: - 创建一个新的...
3. **WebPart通信**:WebParts可以通过连接(WebPart Connections)进行数据交换,允许一个WebPart的行为影响另一个WebPart。例如,一个搜索WebPart可以将结果传递给一个显示结果的WebPart。 4. **WebPart类别**:...
3. **数据绑定**: 在WebPart中,我们需要将SPGridView与SharePoint列表的数据源绑定。这通常通过使用SPDataSource控件完成,它可以连接到SharePoint列表,并提供必要的查询功能以获取数据。 4. **排序功能**: ...
这些示例可能包含了数据绑定、用户输入处理、事件处理程序以及自定义属性。通过研究这些源代码,开发者可以学习如何创建自己的WebPart,理解如何实现特定的功能和交互。 5. **WebPart设计模式** 示例代码可能包含...
WebPart是Microsoft SharePoint技术中的一个重要组成部分,它是构建可自定义和交互式Web应用程序的基础模块。在本教程中,我们将深入探讨WebPart的概念、用途以及如何为初学者进行实践操作。 一、WebPart概述 ...
2. **WebPart连接**:WebParts可以通过连接机制共享数据,这使得它们之间可以通信,实现更复杂的功能。例如,一个搜索WebPart的结果可以显示在另一个WebPart中。 3. **WebPart zones**:Zone是WebPart布局的基础,...
WebPart的生命周期包括几个关键阶段:初始化、加载、数据绑定、呈现和卸载。在这些阶段中,开发者可以重写方法以执行特定操作,如设置初始属性、加载或保存状态、处理数据以及生成HTML输出。 【WebPart的类型】 1....
- 创建两个 WebPart,一个作为数据源 WebPart,另一个作为数据接收 WebPart。 - 实现数据源 WebPart 和数据接收 WebPart 之间的连接逻辑。 - 展示从数据源 WebPart 接收到的数据,例如预算数据。 #### 五、总结 ...
【标题】:“包含用户控件的最简单的webpart”指的是在Visual Studio 2005(VS2005)环境中开发的一种特定类型的Web部件(WebPart),它用于Microsoft Office SharePoint Server 2007(MOS2007)平台。WebPart是...
4. **WebPart开发**:讲解如何使用.NET Framework和C#进行WebPart开发,包括设计用户界面、处理事件、实现数据绑定等。 5. **WebPart安全性和权限**:讨论了WebPart与SharePoint权限模型的关系,如何控制用户对...
例如,一个WebPart可以检索数据,而另一个WebPart则负责显示这些数据。通过连接器,WebPart可以组合成复杂的业务逻辑。 5. **WebPart Zones** WebPart Zones是SharePoint页面上的容器,用于组织和管理WebPart。每...