微软的SDK出错啦!另:Sharepoint Webpart在网站的不同位置工作时的一个问题的讨论。
2005-02-18 15:25
585 查看
在开发Sharepoint上的应用系统,写到对portal server上的Area进行操作的时候,Portal Server上面的区域有两种数据,一种和一般的WSS内容一样,是以List的方式保存的,这时候只要有WSS的Object Model就可以操作。但是另一种数据就不一样,要用portal里面的方法来做,一个例子就是区域的列表的内容以及区域本身,结果操作的时候发现一个很气愤的东西,就是SDK里面提到区域的列表是一个AreaListingCollection,说对这个东西的任何写操作,如果不调用Update就无效,SDK里面还列出了Update()方法的一个介绍。但是等我去写代码的时候,居然Listing有Update,Area也有Update,但是ListingCollection就是没有Update。而如果你真的写成Listings.Add(...)的话,果然被SDK说中,无效!这时候你必须要调用Area的Update()方法,才能保证这个ListingCollection的添加是成功的。
然后去写webpart,结果又遇到问题了,在webpart的代码里面,居然不能SQLConnection.Open(),这次我猜是我错,因为以前看到有人出过类似的错,可是如何解决忘记了。。。:(
代码如下,哪个大侠帮忙分析下。签了StrongName,也放到GAC里面了。
SPWeb web = SPControl.GetContextWeb(Context);
SPList list = web.Lists["List"];
list.Permissions.CheckPermissions(SPRights.AddListItems);
SqlConnection conn = new SqlConnection("Persist Security Info=true;Integrated Security=SSPI;database=Server_Data;server=server;User ID=user;Password=password;Connect Timeout=30");
conn.Open();
问题解决了,是这样子的:
上面这段代码是一个webpart的代码,它是一个实现对某个List的特殊操作的webpart,为了方便用户使用,它可以在网站首页上调出来,那么这时,就可以用上面这样的代码,没有任何问题,但是如果把这个webpart拿到一个List的view上面,它就出错了。而如果在第一句后面,加上web = web.Site.RootWeb;就没有问题了。
按照这个问题的现象,是在List下工作和在首页下工作的ContextWeb不相同造成的。
我另外有一个webpart,是对Document Library做操作的,那个就不存在这个问题,我看了一下代码,它是这样的:
SPWeb site = SPControl.GetContextWeb(Context);
SPFolder folder = site.GetFolder("Doclib");
而这个代码在首页上和Document Library上工作的时候,却没有任何的问题。也就是说,在这种情况下,这两个不同的ContextWeb取到的Doclib却是相同的。
看起来问题还不是这么简单。
然后去写webpart,结果又遇到问题了,在webpart的代码里面,居然不能SQLConnection.Open(),这次我猜是我错,因为以前看到有人出过类似的错,可是如何解决忘记了。。。:(
代码如下,哪个大侠帮忙分析下。签了StrongName,也放到GAC里面了。
SPWeb web = SPControl.GetContextWeb(Context);
SPList list = web.Lists["List"];
list.Permissions.CheckPermissions(SPRights.AddListItems);
SqlConnection conn = new SqlConnection("Persist Security Info=true;Integrated Security=SSPI;database=Server_Data;server=server;User ID=user;Password=password;Connect Timeout=30");
conn.Open();
问题解决了,是这样子的:
上面这段代码是一个webpart的代码,它是一个实现对某个List的特殊操作的webpart,为了方便用户使用,它可以在网站首页上调出来,那么这时,就可以用上面这样的代码,没有任何问题,但是如果把这个webpart拿到一个List的view上面,它就出错了。而如果在第一句后面,加上web = web.Site.RootWeb;就没有问题了。
按照这个问题的现象,是在List下工作和在首页下工作的ContextWeb不相同造成的。
我另外有一个webpart,是对Document Library做操作的,那个就不存在这个问题,我看了一下代码,它是这样的:
SPWeb site = SPControl.GetContextWeb(Context);
SPFolder folder = site.GetFolder("Doclib");
而这个代码在首页上和Document Library上工作的时候,却没有任何的问题。也就是说,在这种情况下,这两个不同的ContextWeb取到的Doclib却是相同的。
看起来问题还不是这么简单。
相关文章推荐
- 一个SharePoint Service下页可以使用的RSS阅读器Webpart
- sharepoint webpart开发中遇到的问题 This type of page is not served.
- 记一个SharePoint Workflow一睡永不醒来的问题
- 一步一步SharePoint 2007之二十二:完美解决实现Form认证后无法再用SharePoint Designer编辑网站的问题
- 在自定义Sharepoint Webpart中使用Linq的问题
- SharePoint Serivce 安装时的一个问题
- 十分难受的过程.一周的时间,终于把Sharepoint Server 的一个网站集迁移到了另一个FARM中.(一)
- windows sharepoint service 3.0 wss3 URL 映射问题,差点把网站废掉
- 一步一步SharePoint 2007之十七:解决实现Form认证后无法再用SharePoint Designer编辑网站的问题
- 一步一步SharePoint 2007之二十二:完美解决实现Form认证后无法再用SharePoint Designer编辑网站的问题
- 如何快速构建一个美女主播网站(来自知乎一个关于 webRTC 是否适合直播问题的讨论)
- 问题总结(一)使用代码调整SharePoint WebPart 视图和列表菜单
- 怎样在Sharepoint webpart中写 Repeat 、datalist 、datagrid ,读懂这段代码应该可以解决这类问题了
- 推荐一个用SharePoint Designer 设计工作流的视频系列
- 十分难受的过程.一周的时间,终于把Sharepoint Server 的一个网站集迁移到了另一个FARM中.(二)
- 一步一步SharePoint 2007之十七:解决实现Form认证后无法再用SharePoint Designer编辑网站的问题
- sharepoint Rss webpart 代理proxy 问题 [转自飞身社区]
- 一步一步SharePoint 2007之二十二:完美解决实现Form认证后无法再用SharePoint Designer编辑网站的问题
- 问题总结(一)使用代码调整SharePoint WebPart 视图和列表菜单
- 前几天看到一个网站,同一个页面输入不同域名时显示不同位置