我正在尝试确定将在MOSS列表中创建的下一个列表项的ID。有什么办法吗?

谢谢,MagicAndi

最佳答案

以下CAML查询将确定接下来最可能生成的ID:

int iNextID = 1;

try
{
    using (SPSite objSite = new SPSite(sSiteUrl))
    {
        using (SPWeb objWeb = objSite.OpenWeb())
        {
            SPList objList = objWeb.Lists[sListName];

            SPQuery objQuery = new SPQuery();
            // objQuery.RowlImit = 1;
            objQuery.Query = "<OrderBy><FieldRef Name='ID' Ascending='False' /></OrderBy><RowLimit>1</RowLimit>";
            objQuery.Folder = objList.RootFolder;

            // Execute the query against the list
            SPListItemCollection colItems = objList.GetItems(objQuery);

            if (colItems.Count > 0)
            {
                string sMaxID = colItems[0]["ID"].ToString();
                iNextID += int.Parse(sMaxID);
            }
        }
    }
}
catch (Exception ex)
{
    ...
}

return iNextID;


但是,这对于删除最近生成的列表项(ID为N),然后使用上面的代码给出下一个ID的情况不起作用-当它应为N + 1时,它将返回N。

07-26 09:27