• 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对象是不需要释放的,是系统自己维护的 ....

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

  • 相关阅读:
    yum安装出现Error: Package: glibc-headers-2.17-157.el7.x86_64 (centos7.3)类似报错解决方案
    构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境
    安卓扫描条码二维码功能
    安卓格式化日期
    生成k8s join代码
    Delphi ado连接DBF数据
    README-gitlab
    sqlserver查看哪段时间不存在数据
    delphi强制终止进程
    sqlserver启用通过sql语句远程访问权限
  • 原文地址:https://www.cnblogs.com/qiumc/p/2606983.html
Copyright © 2020-2023  润新知