在sharepoint列表中删除项目时重新排序列号

时间:2010-11-01 09:10:46

标签: sharepoint sharepoint-2007

我有一个“数字”列表。此列表中的项目为1到10(ID以外的列将显示此编号)。

 item[1st item]["order"]=1;item[2nd item]["order"]=2;......item[10th item]["order"]=10;

如果有任何项目被删除,可以说项目[第6项] [“顺序”] = 6;被删除后,该列表中的项目应为1到9,即当项目被删除时,自动必须订购这些值。在这里,我使用ItemDeleted事件处理程序来实现此功能。但它不起作用。我的代码是:

public override void ItemDeleted (SPItemEventProperties properties)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                string mysiteUrl = properties.WebUrl;
                SPSite mysite = new SPSite(mysiteUrl);
                SPWeb myweb = mysite.OpenWeb();
                myweb.AllowUnsafeUpdates = true;
                SPList mylist = myweb.Lists["Numbers"];
                for (int i = 0; i < mylist.ItemCount; i++)
                {
                    int order = int.Parse(mylist.Items[i]["order"].ToString());
                    if (!(i + 1 == order))
                    {
                        int categoryId = int.Parse(mylist.Items[i]["ID"].ToString());
                        SPListItem item = mylist.GetItemById(categoryId);
                        item["Priority"] = i + 1;
                        mylist.Update();
                    }
                }
                myweb.AllowUnsafeUpdates = false;
            });
        }

我安装并激活了该功能。但它不起作用。我不知道这里出了什么问题。请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

尝试在SPListItem上调用Update()而不是SPList