Для реализации пользовательских подкачки решения с использованием C#, ADO.Net
, с SQL Server в качестве базы данных, давайте предположим следующие детали:Пользовательские подкачки с помощью столбца данных с зазором в отчетах
Total Records = 1000
Page Size = 100
Это означало бы, есть 10 pages
, я использую запрос следующим образом:
Min and Max Id (Primary Key)
выбираются с помощью скалярных запросов:
Select Min(Id), Max(Id) from Table;
Select * from Table where Id >= (Min Record) and Id < (Max Record)
Здесь для каждой сделки, Min and Max Record Value
увеличивается на величину Page Size, пока точка Max Record не достигнет или не превысит значение Actual Max.
Это решение отлично подходит для столбца автоматического увеличения/идентичности, который имеет непрерывные значения, но предположим, что используемый столбец имеет разницу в значениях, хотя они все еще могут быть заказаны, например 1000 values
находятся между Min = 1 and Max = 3000
.
я следующие возможные работы вокруг, один предложил в следующих SO link, где дополнительный
RowId column
используется для достижения того же.Другие варианты будут открывать чтения и чтения записи для данной страницы, создать список и таким образом принести страницу
Что хотите в идеале выполняется Top <PageSize>
SQL запрос а, где она выполняется из предопределенной строки или значения, которые я предлагаю, вместо того, чтобы начинать, я бы не стал создавать дополнительный столбец, я могу работать с отключенной архитектурой, не требуется Reader.
Любое предложение или указатель, пожалуйста, дайте мне знать, если уточнение требуется для любой детали в вопросе
использовать 'ROW_NUMBER' –
Вот там в ссылке, размещенной в этом вопросе, но я хочу, чтобы избежать создания дополнительного столбца. http://stackoverflow.com/questions/758186/how-to-get-n-rows-starting-from-row-m-from-sorted-table-in-t-sql –
Вы можете использовать это решение, но добавить дополнительный 'SELECT' сверху, чтобы исключить новый столбец, если он настолько нежелателен. –