`
netxdiy
  • 浏览: 714677 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Webpart中用DataGrid绑定SQL数据? [downmoon原作]

 
阅读更多

自写了一个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设计与实现、WebPart连接、WebPart权限管理、Visual WebPart开发、WebPart调试与部署等。每章节都会通过实例来讲解相关...

    webpart开发及于silverlight整合.pptx

    WebPart开发还涉及数据绑定和用户交互的设计。通过使用ASP.NET的数据绑定控件,如GridView、ListView等,WebPart可以轻松地从数据库或其他数据源中获取并显示数据。此外,JavaScript和AJAX技术的应用使得WebPart能够...

    WebPart开发

    - "WalkThrough-WebPart2.ppt"可能深入到WebPart的编程模型,包括事件处理和数据绑定。 - "WalkThrough-WebPart3.ppt"可能讲解WebPart的连接性和协作功能。 - "WalkThrough-WebPart4.ppt"可能涉及WebPart的权限...

    Sharepoint webpart 自定义开发(很详细)

    视图定义了WebPart如何呈现数据,属性允许用户配置WebPart的行为,而连接选项则让WebParts之间能够交换信息。 在SharePoint中,WebPart开发通常涉及以下步骤: 1. **创建WebPart类**:使用C#或VB.NET,在Visual ...

    有关SharePoint WebPart的一些文档笔记

    1. **数据展示**: 从各种数据源(如SQL Server、Excel)拉取数据并展示。 2. **协作工具**: 如日历、任务列表,促进团队协作。 3. **集成外部系统**: 通过Web服务或API与其他系统集成。 4. **自定义功能**: 实现特定...

    模块拖拽WebPart实现

    字段类型如描述中提到的,可以用Image存储序列化的WebPart对象,或者用Ntext存储XML格式的布局数据。 实现这个功能需要以下步骤: 1. **创建WebPartZone**:WebPartZone是WebPart管理的基础,它定义了一个区域,...

    sharepoint webpart 2

    在SharePoint中,WebPart被设计为一个容器,用于展示各种类型的数据和功能,如新闻、文档库、日历、搜索框等。每个WebPart都有自己的属性和方法,可以通过WebPart工具面板进行配置,以改变其显示方式和行为。 **...

    webpart开发学习资料

    学习使用Visual Studio来创建和调试WebPart,以及如何配置WebPart属性和连接WebPart之间的数据流;此外,还会涉及到SharePoint的WebPart Zones、WebPart Connections和WebPart Pages等相关知识。 通过实践这些教程...

    SharePoint_WebPart_入门指南(全)

    WebPart连接允许两个或更多WebPart之间交换数据,形成更复杂的工作流程。例如,一个搜索WebPart可以将结果显示到一个列表WebPart中。 **6. WebPart开发** 开发自定义WebPart通常涉及以下步骤: - 创建一个新的...

    webpart代码

    3. **WebPart通信**:WebParts可以通过连接(WebPart Connections)进行数据交换,允许一个WebPart的行为影响另一个WebPart。例如,一个搜索WebPart可以将结果传递给一个显示结果的WebPart。 4. **WebPart类别**:...

    SharePoint中一个简单的用SPGridView显示数据的webpart示例

    3. **数据绑定**: 在WebPart中,我们需要将SPGridView与SharePoint列表的数据源绑定。这通常通过使用SPDataSource控件完成,它可以连接到SharePoint列表,并提供必要的查询功能以获取数据。 4. **排序功能**: ...

    webpart完整示例代码

    这些示例可能包含了数据绑定、用户输入处理、事件处理程序以及自定义属性。通过研究这些源代码,开发者可以学习如何创建自己的WebPart,理解如何实现特定的功能和交互。 5. **WebPart设计模式** 示例代码可能包含...

    webpart实例简易教程,适合初学者

    WebPart是Microsoft SharePoint技术中的一个重要组成部分,它是构建可自定义和交互式Web应用程序的基础模块。在本教程中,我们将深入探讨WebPart的概念、用途以及如何为初学者进行实践操作。 一、WebPart概述 ...

    webpart 教程

    2. **WebPart连接**:WebParts可以通过连接机制共享数据,这使得它们之间可以通信,实现更复杂的功能。例如,一个搜索WebPart的结果可以显示在另一个WebPart中。 3. **WebPart zones**:Zone是WebPart布局的基础,...

    Walkthrough-WebPart

    WebPart的生命周期包括几个关键阶段:初始化、加载、数据绑定、呈现和卸载。在这些阶段中,开发者可以重写方法以执行特定操作,如设置初始属性、加载或保存状态、处理数据以及生成HTML输出。 【WebPart的类型】 1....

    微软webpart教程

    - 创建两个 WebPart,一个作为数据源 WebPart,另一个作为数据接收 WebPart。 - 实现数据源 WebPart 和数据接收 WebPart 之间的连接逻辑。 - 展示从数据源 WebPart 接收到的数据,例如预算数据。 #### 五、总结 ...

    包含用户控件的最简单的webpart

    【标题】:“包含用户控件的最简单的webpart”指的是在Visual Studio 2005(VS2005)环境中开发的一种特定类型的Web部件(WebPart),它用于Microsoft Office SharePoint Server 2007(MOS2007)平台。WebPart是...

    SharePoint WebPart入门教程 PPT

    4. **WebPart开发**:讲解如何使用.NET Framework和C#进行WebPart开发,包括设计用户界面、处理事件、实现数据绑定等。 5. **WebPart安全性和权限**:讨论了WebPart与SharePoint权限模型的关系,如何控制用户对...

    MOSS2007之WebPart开发

    例如,一个WebPart可以检索数据,而另一个WebPart则负责显示这些数据。通过连接器,WebPart可以组合成复杂的业务逻辑。 5. **WebPart Zones** WebPart Zones是SharePoint页面上的容器,用于组织和管理WebPart。每...

Global site tag (gtag.js) - Google Analytics