sharepoint 纠结的一个小问题

遇到一个小小的问题,纠结了半天,记录一下。

做了一个小webpart,很小很简单的一个功能,读取列表然后在前台显示出来,刚得到需求时很不屑.......报应就是浪费了我半天的时间....

因为要读取的列表位置不固定,所以需要在webpart的属性部分添加一些自定义属性,网站地址、列表名称、要读取列表项目的数量...

下面的是其中一个属性的定义,自我认为是没有什么问题的...

自定义属性部分
        [Personalizable]
        [WebBrowsable(true)]
        [Category("定制化配置")]
        [WebDisplayName("列表所在网站")]
        [WebDescription("列表所在网站的URL")]
        public string WebUrl
        {
            get
            {
                return _webUrl;
            }
            set
            {
                _webUrl = value;
            }
        }
        private string _webUrl = "/";

 接下来是读取列表并绑定到Repeater的代码

绑定Repeater部分
 1    List<ItemFieldModel> ifms = null;
 2             if (flag)
 3             {
 4                 int num = Convert.ToInt32(displaycount);
 5                 SPSite site = SPContext.Current.Site;
 6 
 7                 try
 8                 {
 9                     SPWeb web = site.OpenWeb(webUrl);//site.RootWeb;
10 
11                     SPList list = web.Lists.TryGetList(listname.Trim());
12 
13 
14                     readFileMall.NavigateUrl = list.RootFolder.ServerRelativeUrl;//更多的链接地址
15 
16                     SPView defaultView = null;
17 
18                     if (string.IsNullOrEmpty(view))
19                     {
20                         defaultView = list.DefaultView;
21                     }
22                     else
23                     {
24                         defaultView = list.Views[view];
25                     }
26 
27 
28 
29 
30                     SPQuery query = new SPQuery();
31 
32                     query.Query = defaultView.Query;
33 
34                     query.RowLimit = uint.Parse(displaycount);
35 
36                     SPListItemCollection listItems = list.GetItems(query);
37 
38 
39 
40                     ifms = listItems.Cast<SPListItem>().Select(
41                         item =>
42                                   new ItemFieldModel()
43                                   {
44                                       Title = item.Title,
45                                       TitleUrl = list.Forms[PAGETYPE.PAGE_DISPLAYFORM].ServerRelativeUrl + "?ID=" + item.ID.ToString(),
46                                       AddTime = DateTime.Parse(item["Created"].ToString())
47 
48                                   }
49                                   ).ToList<ItemFieldModel>();
50 
51 
52 
53                 }
54                 catch (Exception ex)
55                 {
56                     addErrorTip(ex.Message);
57                 }
58                 finally
59                 {
60                 }
61 
62             }
63             try
64             {
65 
66                 int d = ifms.Count;
67                 if (d < int.Parse(displaycount))
68                 {
69                     for (int i = 0; i < (6 - int.Parse(displaycount)); i++)
70                     {
71                         ifms.Add(new ItemFieldModel());
72                     }
73                 }
74 
75                 Repeater1.DataSource = ifms;
76                 Repeater1.DataBind();
77             }
78             catch (Exception ex)
79             {
80                 addErrorTip(ex.Message);
81             }

过程就是从列表中查询出需要显示的数据然后绑定到Repeater上。

 

代码完成,直接部署。

 

修改webpart属性,保存,刷新页面,没有问题....

但再次编辑页面修改webpart属性,修改显示列表条目的数量,保存之后webpart显示数量没变,还是默认的5条...

纠结不应该出现这样的问题啊。

之前做过一个读取文档库的webpart,代码几乎都一样,为什么那个webpart就没有问题呢..

比对两个webpart的代码....

问题应该在这里

可能错的部分
1     using (SPSite site = SPContext.Current.Site)
2             {
3                 using (SPWeb web = site.OpenWeb())
4                 {
5 
6                 }
7             }

之前不知道在哪里看到的,说spweb 使用之后要释放掉,我就使用了 using;

后来才知道,通过SPcontext.current.web获得的spweb对象是不需要释放的,是系统自己维护的 ....

把这个去掉之后问题解决,在此记录。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/qiumc/archive/2012/07/25/2606983.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值