Иногда действительно хорошо знать, какой 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;
}
Комментариев нет:
Отправить комментарий