设为首页 收藏本站
查看: 1245|回复: 0

[经验分享] Sharepoint学习笔记---Sandbox Solution-- Full Trust Proxy--开发实例之(2、在Webpart中访问Full Tr

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-24 11:30:33 | 显示全部楼层 |阅读模式
  上一篇Sharepoint学习笔记---Sandbox Solution-- Full Trust Proxy--开发实例之(1、创建一个能访问DataBase的Full Trust Proxy), 我们在Sharepoint的Farm Solution中创建,部署并注册了一个能访问数据库的Full trust Proxy,这一篇我们将在Sharepoint的Sandbox Solution中创建一个Webpart,并通过前面创建的Full trust proxy访问数据库,把访问结果显示在我们创建的Webpart中。
进入操作步骤。
一、创建和设置项目  1、打开VS2010,创建一个空项目Empty SharePoint Project,命名为MyTestSandBoxAccessDBWebPart,如下 DSC0000.png
   
  此项目为Sandbox类型的
DSC0001.png
  
  2、在Solution Explorer中,右击References目录,选择Add reference,在跳出的Add Reference窗口,选择Browse栏,浏览到你部署的Full trust Proxy类所在目录
C:\Windows\assembly\GAC_MSIL\My.Sharepoint.SandBox
DSC0002.png

  进入对应的版本


DSC0003.png
选择My.Sharepoin.SandBox.dll类

DSC0004.png

  引用成功后,可以双击此类,看到它里面定义的对应内容

DSC0005.png
  
  二、创建Webpart并调用Full Trust Proxy1、在Solution Explorer中,右击项目,选择Add,添加New Item,选择Webpart(注意:不能选择添加Visual Web Part),并命名为TestSandboxSolutionAccessDataBaseWebPart
DSC0006.png
2、在Solution Explorer中,双击TestDBWebpart.webpart,编辑内容如下:
  此处我们设置了它的Title和Description.
DSC0007.png
  3、右击Feature1,重命名为DataBaseWebPart,
DSC0008.png

  然后双击DataBaseWebPart,打开Feature Designer,在此窗口中设置如下图
  
DSC0009.png

  4、修改TestDBWebpart.cs代码如下:


using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.UserCode;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.Utilities;
using System.Data;
using My.Sharepoint.SandBox;
namespace MyTestSandBoxAccessDBWebPart.TestDBWebpart
{
    [ToolboxItemAttribute(false)]
    public class TestDBWebpart : WebPart
    {
        private TextBox txtDBConnection = new TextBox() { Text = @"Data Source=Data Source=serverDB;Initial Catalog=MyDb;User ID=MyApp;Password=mypwd" };
        private TextBox txtSQLCommand = new TextBox() { Text = @"SELECT TOP(100)* FROM dbo.myTable" };
        private Label results = new Label();
        private Label lblFileContent = new Label() { Text = "Input DBConnectionStr :" };
        private Label lblFileName = new Label() { Text = "Input SQL Command :" };
        private Button btnAccessDatabase = new Button() { Text = "Access Database" };
        private GridView gv = new GridView();
        public TestDBWebpart()
        {
            #region  ProxyOne
            string assemblyName = "My.Sharepoint.SandBox, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f460c3b7a15fdf1";
            string typeName = "My.Sharepoint.SandBox.MyTestSandBoxAccessDBInfo.TestProxyCode.SQLProxyExecute";
            try
            {
                btnAccessDatabase.Click += (object sender, EventArgs e) =>
                {
                    string DBConnectionString = txtDBConnection.Text.ToString().Trim();
                    string SQLCommandStr = txtSQLCommand.Text.ToString().Trim();
                    DataTable dt = ((DataSet)SPUtility.ExecuteRegisteredProxyOperation(assemblyName, typeName,
                        new My.Sharepoint.SandBox.MyTestSandBoxAccessDBInfo.TestProxyCode.SQLProxyArgs(DBConnectionString, SQLCommandStr))).Tables[0];
                    gv.DataSource = dt;
                    gv.DataBind();
                };
            }
            catch (Exception ex)
            {
                results.Text = ex.ToString();
            }
            #endregion
        }
        protected override void CreateChildControls()
        {
            Table layoutTable = new Table();
            #region Create Table
            //Input File Content Row
            layoutTable.Rows.Add(new TableRow());
            layoutTable.Rows[0].Cells.Add(new TableCell());
            layoutTable.Rows[0].Cells.Add(new TableCell());
            //Input File Location Row
            layoutTable.Rows.Add(new TableRow());
            layoutTable.Rows[1].Cells.Add(new TableCell());
            layoutTable.Rows[1].Cells.Add(new TableCell());
            //Create File button Row
            layoutTable.Rows.Add(new TableRow());
            layoutTable.Rows[2].Cells.Add(new TableCell() { ColumnSpan = 2 });
            //Show Result Row
            layoutTable.Rows.Add(new TableRow());
            layoutTable.Rows[3].Cells.Add(new TableCell() { ColumnSpan = 2 });
            txtDBConnection.Width = 400;
            txtSQLCommand.Width = 400;
            layoutTable.Rows[0].Cells[0].Controls.Add(lblFileContent);
            layoutTable.Rows[0].Cells[1].Controls.Add(txtDBConnection);
            layoutTable.Rows[1].Cells[0].Controls.Add(lblFileName);
            layoutTable.Rows[1].Cells[1].Controls.Add(txtSQLCommand);
            layoutTable.Rows[2].Cells[0].Controls.Add(btnAccessDatabase);
            layoutTable.Rows[3].Cells[0].Controls.Add(results);
            #endregion
            this.Controls.Add(layoutTable);
            this.Controls.Add(gv);
            base.CreateChildControls();
        }

        protected override void RenderContents(HtmlTextWriter writer)
        {
            base.RenderContents(writer);
        }
    }
}  在上面的代码中,如何取得Assembly Name中的相应值,可参见此文 :
  Sharepoint学习笔记--- 快速确定VisualStudio2010当前Project的assembly name
  在此Webpart中,我们创建了两个TextBox,一个用于输入数据库连接字符串,一个用于输入SQL语句。同时还定义了一个按钮,并Attach了此按钮的Click事件,当点击此按钮后,后台代码会通过取得的参数,传递给Full Trust Proxy类,通过Full Trust Proxy类去访问数据库内容,然后把取得的结果传递回来,显示在Webpart上的GridView控件中。
  

  三、部署并使用Webpart呈现DataBase数据库数据 Build并部署此项目。成功后,在测试Sharepoint网站上创建一个Web Part Page,在此Page上加入部署的Webpart,然后在此Webpart的相应Text框中输入相应内容再点击Access Database按钮
DSC00010.png
  可看到结果
  
DSC00011.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118157-1-1.html 上篇帖子: SharePoint 2013 隐藏部分Ribbon菜单 下篇帖子: SharePoint 2013—创建Master Page
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表