Мегаобучалка Главная | О нас | Обратная связь


Настраиваемое разбиение на страницы с помощью ObjectDataSource



2019-12-29 253 Обсуждений (0)
Настраиваемое разбиение на страницы с помощью ObjectDataSource 0.00 из 5.00 0 оценок




Как уже было сказано в пункте 4.7.3 информация из каталога выводится на экран в виде таблицы (GridView) постранично по 15 записей. Элементы управления GridView и ObjectDataSource поддерживают автоматическое разбиение на страницы, однако нагрузка на базу данных при этом не уменьшается. В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении. При этом на базу данных выпадает большая нагрузка, связанная с тем, что необходимо выбирать каждый раз весь объём информации.

Чтобы обойти это ограничение при разработке дипломного проекта использовалось настраиваемое разбиение на страницы, при котором из базы данных выбиралась информация только для текущей страницы. Настраиваемое разбиение на страницы, используется совместно с кэшированием данных, поэтому в лучшем случае, обращение к базе данных вообще не потребуется.

Для примера рассмотрим процесс автоматического разбиения на страницы при отображении каталога альбомов, отсортированных по жанру.

Необходимо настроить элемент управления источником данных на автоматическое кэширование:

<asp: ObjectDataSource ID= "ObjectDataSource1" runat= "server"

TypeName= "ComponentsDB. CatalogDB" SelectCountMethod= "GetCountByGenre" SelectMethod= "GetPageProductsByGenre" EnablePaging= "true" OnSelected= "ObjectDataSource_Selected" EnableCaching= "true" CacheDuration= "360">

<SelectParameters>

<asp: QueryStringParameter Name= "GenreID" QueryStringField= "GenreID"

Type= "Int32" />

</SelectParameters>

</asp: ObjectDataSource>

где

EnablePading = "true" – включает разбиение на страницы в источнике данных.

SelectCountMethod = "GetCountByGenre" – метод для подсчёта общего кол-ва строк в таблице. Данный метод необходим, для того чтобы GridView мог создать корректное количество ссылок страниц на панели навигации.

В данной дипломной работе некоторые фрагменты текста отсутствуют или замещены на текст не соответствующий теме этого диплома. Отсутствуют или не соответствуют некоторые необходимые формулы, расчеты, диаграммы и таблицы. Для получения оригинальной версии работы пишите на электронный адрес, указанный в конце дипломной работы, в заключении.

Метод GetCountByGenre:

public static int GetCountByGenre (int GenreID)

{

SqlConnection conn = new SqlConnection (WebConfigurationManager. ConnectionStrings ["connStr"].ConnectionString);

SqlCommand cmd = new SqlCommand ("GetCountByGenre", conn);

……………………………………………………

cmd. Parameters. Add ("GenreID", SqlDbType. Int);

cmd. Parameters ["GenreID"].Value = GenreID;

int count=-1;

try

{

conn. Open();

count = (int) cmd. ExecuteScalar();

}

……………

{

conn. Close();

}

finally

{

conn. Close();

}

return count;

}

 

Хранимая процедура GetCountByGenre

CREATE PROCEDURE GetCountByGenre (@GenreID INT)

AS

……………………………….

WHERE GenreID = @GenreID

GO

Метод GetPageProductsByGenre вызывает хранимую процедуру GetPageProductsByGenre, которая возвращает данные для текущей страницы GridView.

Метод GetPageProductsByGenre:

public static DataSet GetPageProductsByGenre (int startRowIndex, int maximumRows, int GenreID)

{

SqlConnection conn = new SqlConnection (WebConfigurationManager. ConnectionStrings ["connStr"].ConnectionString);

SqlCommand cmd = new SqlCommand ("GetPageProductsByGenre", conn);

cmd. CommandType = CommandType. StoredProcedure;

cmd. Parameters. Add ("Start", SqlDbType. Int);

cmd. Parameters ["Start"].Value = startRowIndex;

……………………………………………………

cmd. Parameters ["Count"].Value = maximumRows;

cmd. Parameters. Add ("GenreID", SqlDbType. Int);

cmd. Parameters ["GenreID"].Value = GenreID;

DataSet ds = new DataSet();

SqlDataAdapter da = new SqlDataAdapter();

………………………….

try

{

conn. Open();

da. Fill(ds);

}

catch (SqlException)

{

conn. Close();

return null;

}

finally

{

conn. Close();

}

return ds;

}

Хранимая процедура GetPageProductsByGenre:

CREATE PROCEDURE GetPageProductsByGenre (@Start INT, @Count INT, @GenreID INT)

AS

CREATE TABLE #TempProductsList

(

……………….

ProductID INT,

ArtistName NVARCHAR(50),

ArtistID INT,

……………………….

UnitCost MONEY,

Presence BIT

)

INSERT INTO #TempProductsList

(ProductID, ArtistName, ArtistID, AlbumName, UnitCost, Presence)

SELECT ProductID, ArtistName, Catalogue. ArtistID, AlbumName, UnitCost, Presence

………………………….

WHERE GenreID = @GenreID AND Catalogue. ArtistID = Artists. ArtistID

ORDER BY ArtistName

DECLARE @FromNum INT

DECLARE @ToNum INT

SET @FromNum = @Start

……………………………

SELECT ProductID, ArtistName, ArtistID, AlbumName, UnitCost, Presence FROM #TempProductsList

WHERE Num >= @FromNum AND Num <= @ToNum

GO

В данном пункте был рассмотрен метод настраиваемогого разбиения на страницы с использованием GridView и ObjectDataSource, который позволяет выбирать из базы данные только конкретной страницы, а не целиком для всей таблицы. Тем самым, снижая объём данных, выбираемых из базы данных.

 

 




2019-12-29 253 Обсуждений (0)
Настраиваемое разбиение на страницы с помощью ObjectDataSource 0.00 из 5.00 0 оценок









Обсуждение в статье: Настраиваемое разбиение на страницы с помощью ObjectDataSource

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (253)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)