上一篇介绍了如何自定义WebPart属性,这篇笔者将介绍如何实现两个WebPart之间的数据交互,前面有提到过QuickPart包括了QuickPart Provider和QuickPart Consumer,其中Provider是数据发送方, Consumer是数据接收方,这里我们要做的事情是当左栏区域上Provider WebPart文件夹被选中时,右栏区域上Consumer WebPart就显示该文件夹下的所有文件,所以笔者在原有项目上新建一个WebUserControl用于显示文件列表
取名为,FileList.ascx,单击添加按钮,往TreeCatalog.ascx控件中添加如下代码:
//声明该控件是数据的发送方
[ConnectionProvider("Send The Folder's Url")]
//获得选中文件夹的路径
public string SendFolderUrl()
{
try
{
return tvTreeCatalog.SelectedNode.Value;
}
catch(Exception e)
{
return "";
}
}
往新建的FileList.ascx控件上拖拽一个GridView控件,ID为GvFileList
FileList.ascx.cs页面代码如下:
//声明为数据的接收方
[ConnectionConsumer("Receive The Folder's URL")]
//接收TreeCatalog发送过来的URL,并将文件夹下的所有文件绑定至GridView控件上
public void ReceiveFolderUrl(string url)
{
//获得当前的页面
SPWeb spWeb = SPContext.Current.Web;
//通过传过来的url获得文件夹
SPFolder spFolder = spWeb.GetFolder(url);
//创建一张临时表保存所有文件
DataTable dtFileList = new DataTable();
dtFileList.Columns.Add("类型");
dtFileList.Columns.Add("文件名");
dtFileList.Columns.Add("创建时间");
//遍历文件夹下的所有文件
foreach (SPFile spFile in spFolder.Files)
{
DataRow drFileList = dtFileList.NewRow();
drFileList["类型"] = spFile.IconUrl;
drFileList["文件名"] = spFile.Name;
drFileList["创建时间"] = spFile.TimeCreated.ToString();
dtFileList.Rows.Add(drFileList);
}
//绑定数据源
GvFileList.DataSource = dtFileList;
GvFileList.DataBind();
}
FileList.ascx页面前台源代码
生成项目,看到输出一栏显示成功复制一个.dll以及两个.ascx文件
打开SharePoint站点,进入文档中心子站点,依次选择网站操作->编辑页面
编辑并修改共享Web部件
在页面右边的SideBar中选择FileList控件,单击确定按钮
通过上图方式将两个WebPart连接
重新打开Sharepoint网站后,选中其中的某个文件夹右边就会列出该文件夹下的所有文件,至此就实现了Provider WebPart与Consumer WebPart之间的连接了,这一部分笔者就介绍到这里,下一篇将会介绍SideBar的定制
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!