Иногда действительно хорошо знать, какой ID элемента будет следующим для листа или библиотеки. Решение этому я нашел, путем прямого подключения к базе данных контента и выбора колонки "tp_NextAvailableId" в таблице "AllLists" для версии 2007 или "NextAvailableId" в "AllListsAux" для версии 2010 года..
Запросы будут выглядит так:
Запросы будут выглядит так:
2007: SELECT tp_NextAvailableId FROM AllLists where tp_ID=‘{Id листа}’
2010: SELECT NextAvailableId FROM AllListsAux where ListID=‘{Id листа}’
Наконец, вы можете использовать это расширение для определания следующего ID для кокретного списка:
///<summary> ///Extension above list which send next available item id ///</summary> ///<returns></returns> public static int GetNextAvailableIdFromList(this SPList list, SPSite site) { Guid listId = list.ID; int nextAvailableId = -1; if (site.WebApplication.ContentDatabases.Count > 0) { string DBConnString = site.ContentDatabase.DatabaseConnectionString; SqlConnection con = new SqlConnection(DBConnString); try { con.Open(); SqlCommand com = con.CreateCommand(); com.CommandText = String.Format("SELECT NextAvailableId FROM AllListsAux where ListID=’{0}’", listId.ToString()); nextAvailableId = (int)com.ExecuteScalar(); } finally { con.Close(); } } return nextAvailableId; }
Комментариев нет:
Отправить комментарий