云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Sharepoint 2007 用代码聚合所有子网站文章

Sharepoint 2007 用代码聚合所有子网站文章

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 23:04:48

http://furuknap.blogspot.com/2008/05/creating-your-own-custom-components-for.html。然而,这个例子中,不重写RenderContents方法,而是于OnLoad方法。如果你不希望写所有的代码,我附带了一个Visual Studio 2005

的解决方案“Begin”,可以在文章的未尾看到。现在就去,然后回来。我会在这里等你。 重载OnLoad,确保当我们加载该组件时可以访问DFWP的数据源。OnLoad事件发生在DataBinding事件之前,因此,我们确保在OnLoad中改变数据源是正确的设置数据源的时间。这一点很重要,一旦数据绑定方法已经执行就再没有办法去操纵他们,一直到结果显示出来。

33 protected override void OnLoad(EventArgs e) 34 {

既然我们要操作一个现有的DataFormWebPart控件, 我们需要一些方法去识别和访问这个控件。我们还需要一些途径知道哪些列表需要聚集。让我们解决这些问题通过添加一些属性到这个控件,添加以下行到你的类:

代码

17 private string m_DataFormWebPartId; 18

19 public string DataFormWebPartId 20 {

21 get { return m_DataFormWebPartId; } 22 set { m_DataFormWebPartId = value; } 23 } 24

25 private string m_ListName; 26

27 public string ListName 28 {

29 get { return m_ListName; } 30 set { m_ListName = value; } 31 }

这样做可以让我们在设计的时候配置这个组件。公有属性被用作asp.net 标签的一部分,对于实例:

现在我们有一个标识DFWP和聚集的列表名称,需要获得访问DFWP数据源的方式。然后我们可以开始操纵数据源。添加以下代码到OnLoad方法:

35 DataFormWebPart m_dfwp = this.Page.FindControl(DataFormWebPartId) as DataFormWebPart; 36

37 m_dfwp.DataSources.Clear(); // Empty datasources 38

39 AggregateDataSource ads = new AggregateDataSource(); 40 int sourceCounter = 0;

41 SPWeb web = SPContext.Current.Web;

42 StringBuilder aggregateString = new StringBuilder(); 43

44 aggregateString.AppendLine(\data source\\\);

第35行我们获得了DFWP的引用。第37行清除当前数据源。第39-44行创建我们需要创建的数据源的对象和变量。我将稍候解释这些。 回去看DFWP标记,特别是DataSources标签:

代码

1

2

4

6 8

9 11

12 14

15 17

18

20

DefaultValue=\

21

等等……为节约版面余下代码被省略

此标记指示数据源的作用和我们在代码里需要怎样去创建。首先,如第三行标记,需一个前段代码39行创建的AggregateDataSource。这之中包含一个属性,在第4行标记中,名称Source。Source属性,尽管我们只从标识中不能得知实际为什么类型,个税包含了许多SPDataSources的集合,标记行5和行19,其中又包含了一组Select、Delete、Update和Insert参数每个对象

代码

110

111

112 113 114 115 116 117 118 119

120

此外,AggregateDataSource的Sources标签之后有一个aggregate标记包含了一些字串。 在AggregateDataSource类中,此属性不,尽管它呈现,一个集合,但而是一个字符串。这是明智的用aggregate属性作为一个集合,因此,我们就往里添加项目,但由于某些一些原因,情况并非如此。因此,我们需要为每个我们要添加的数据源使用唯一名字和id值创建这个字符串。这就是为什么我们在代码40和42行中有int型的sourcecounter和StringBuilder aggregateString。

所以我们可以开始考虑如何让我们的组件可以建立数据源。我们有了我们的

AggregateDataSource,现在我们需要添加SPDataSources到Source属性中。

从我们要聚集许多子网站,使用一个递归函数是很有意义的,为其取名getSubWebItems。 现在,在我的实施中我会打破一些递归函数方面的最佳做法,但忍耐一下,我做的一个范例,您可能会希望实现自己的递归。 该函数的签名可以是这样的:

private void getSubWebItems(AggregateDataSource ads, ref int sourceCounter, StringBuilder aggregateString, SPWeb web)

该函数将使用Web和sourceCounter对象来操作的ads和aggregateString对象。让我们来看看:

代码

57 private void getSubWebItems(AggregateDataSource ads, ref int sourceCounter, StringBuilder aggregateString, SPWeb web) 58 58 { 59 try 60 {

61 SPList list = web.Lists[m_ListName]; 62 SPDataSource sds = new SPDataSource(); 63 Parameter p = new Parameter(); 64 p.Name = \;

65 p.DefaultValue = list.ID.ToString(); 66 sds.SelectParameters.Add(p); 67

68 p = new Parameter(); 69 p.Name = \;

70 p.DefaultValue = web.ServerRelativeUrl; 71 sds.SelectParameters.Add(p); 72

73 sds.DataSourceMode = SPDataSourceMode.List; 74 sds.UseInternalName = true; 75

76 sds.SelectCommand = \; 77 ads.Sources.Add(sds); 78

79 aggregateString.AppendLine(\sourceCounter + \\\\\\\SPList\\\); 80 sourceCounter++; 81 82 }

83 catch (Exception) 84 {

85 // Add your own error handling 86 }

一个好的开发人员总是会使用try - catch对吗?是的。行59和83-86所做的,是的,你需要添加错误处理。

行61取得一个我们当前已配置的SPWeb的组件中的ListName的引用。行62创建我们要添加到ads.DataSources的SPDataSource。然后,我们开始添加参数(行63-71),以及不同于标记代码所示,我们只添加select参数。你可能想或者需要添加其他insert, update 和delete更好,取决于你是否要DateFormWebpart可编辑。这样,就selectparameter模板。 在行77我们添加SPDateSource到ads.Sources属性之前我们完成SPDateSource的配置。 还记得看起来像是一个集合的奇怪的aggregate字符串吗?嗯,它只是一个字符串,我们需要拼起该字符串,使用sourceCounter让个数据源有个唯一的字符串。在69行之前,我们结束sourceCounter递增。

最后,我们需要通过调用相同的函数来递归内部本身。我们需要改变参数来确保不是一个无限循环。我们希望所有的子网站聚集好,所以我们在当前网站所有子网站中调用这个函数:

代码

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

http://furuknap.blogspot.com/2008/05/creating-your-own-custom-components-for.html。然而,这个例子中,不重写RenderContents方法,而是于OnLoad方法。如果你不希望写所有的代码,我附带了一个Visual Studio 2005 的解决方案“Begin”,可以在文章的未尾看到。现在就去,然后回来。我会在这里等你。 重载OnLoad,确保当我们加载该组件时可以访问DFWP的数据源。OnLoad事件发生在DataBinding事件之前,因此,我们确保在OnLoad中改变数据源是正确的设置数据源的时间。这一点很重要,一旦数据绑定方法已经执行就再没有办法去操纵他们,一直到结果显示出来。 33 protected override void OnLoad(EventArgs

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com