回答
將產生以下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,當它應該是N + 1。
是的,如果刪除列表中的所有項目,代碼將返回1,即使內部仍在計數 – murki 2010-01-29 23:01:38
看看這個鏈接:http://snipplr.com/view/24210/next-splistitem-id-from-splist/,我試過這個解決方案,它克服了其他的缺點,它涉及到查詢WSS內容數據庫可能有點貴,但你可以實現一個混合解決方案,你會在其他邏輯後面查詢數據庫,如果colItems.Count == 0。
問候!
如果你想更確定你可以創建一個listitem,記錄它的ID,刪除列表項,下一個listitem將有ID + 1。這應該克服最後一項被刪除的情況。
當然,這是非常不正常的..但是從內容數據庫中讀取也是如此。
請問你爲什麼需要它?或者,您可以向包含GUID的列表添加一列,以便您自己預先生成ID。
我發現了另一個解決這個問題的方法。
的問題,我是有關版本:
var newItem = myList.Items.Add();
newItem["Title"] = "whatever";
newItem.Update();
newItem["MyProperty"] = "whatever" + newItem.ID;
newItem.Update();
我不得不版本我的名單上,但不希望創建兩個不同的版本我的新項目。 解決這樣的:
var newItem = myList.Items.Add();
newItem["Title"] = "whatever";
newItem.Update();
myList.EnableVersioning = false;
myList.Update();
newItem["MyProperty"] = "whatever" + newItem.ID;
newItem.Update();
myList.EnableVersioning = true;
myList.Update();
有人可能會認爲開啓關閉版本將刪除所有版本,除了當前但事實並非如此。
這不會給你下一個ID,但可能會解決某人的根本問題。
而不是關閉和版本控制,更好的解決方案是調用newItem.SystemUpdate(假)來更新該項目而不觸發新版本。希望這可以幫助! – 2017-03-01 17:42:34
- 1. 通過SPListItem/SPList迭代
- 2. SPListItem未添加到SPList
- 3. SharePoint:通過唯一ID獲取SPListItem
- 4. 的SharePoint:複製一個SPListItem
- 5. 從SPListItem訪問SPWorkflowStatus
- 6. 來自SPField對象的SPListItem ID
- 7. 添加一個新的SPView到SPList
- 8. Sharepoint 2010,基於當前用戶確定對SPListItem的訪問
- 9. SPList vs SharePointclientObj.List
- 10. 有什麼辦法可以檢查沒有try/catch塊的SPList或SPListItem的存在嗎?
- 11. 在ASP.NET中創建自定義URL令牌(一個MOSS)
- 12. 內核如何確定下一個pid?
- 13. JPA下一個ID值
- 14. MOSS標準下拉菜單
- 15. 重定向到Rails中的下一個ID
- 16. 反轉SPlist
- 17. 確定下一個工作日
- 18. 給權利SPListItem
- 19. 在加權桶列表中確定性地分配一個id
- 20. 的onclick滾動到下一格與一個特定ID
- 21. phpactiverecord獲取下一個ID
- 22. 獲取下一個ID
- 23. SPList沒有更新?
- 24. 如何在下一個和以前的ID在一個有序的搜索時,在一個特定的ID? (MySQL)
- 25. 找到下一個div中存在的下一個元素的id -jquery
- 26. 這是正確的方式來選擇給定當前記錄的ID的前一個和下一個記錄?
- 27. 如何在if語句中的另一個id下獲取id?
- 28. 如何確定在Ruby中一個字母數字ID大於另一個?
- 29. SharePoint check in SPListItem
- 30. 我如何獲得下一個ID在一個表中的Rails
這是一個應該讓你重新思考你的方法的問題。你爲什麼需要了解未來?你需要什麼價值? – 2009-08-06 17:11:29