четверг, 5 сентября 2013 г.

Получение следующего ID в списке или библиотеке

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

Комментариев нет:

Отправить комментарий