2015-05-13 3 views
0

У меня есть довольно интересная проблема для решения, и не знаю, как бы я подошел к ней наилучшим образом.Большие наборы данных с неизвестными суммами строк

При такой интерфейс

public interface IDataCursor 
{ 
    bool Eof(); 
    bool Next(); 
    bool Prev(); 
    bool First(); 
    bool Last(); 

    int GetColumnCount(); 
    object GetValue(int columnIndex); // return value for a given column from current cursor position 
} 

, который указывает на большую структуру данных, и которые мне нужно отобразить в сетке. Для всех виртуальных режимов требуется общее количество записей. Это не работает в моем случае. Я могу только перемещаться назад/вперед.

Кто-нибудь знает о какой-то реализации DataSource, которая реализует аналогичный интерфейс?

Ни одна из существующих бесплатных или коммерческих библиотек не предлагает такую ​​возможность, для каждого из них требуется Общее количество строк.

Я попытался вычислить количество видимых записей для DataGtidView, а затем как-то перемещаться по набору данных и обновлять содержимое базового источника данных, но данные не будут отображаться довольно надежно.

Ищет советы, Благодарю вас.

+1

«Мне нужно отображать в сетке» и «Я могу перемещаться только вперед/назад», противоречат друг другу; хотя бы одно из этих утверждений неверно. Который из? Или они оба ложные? –

+0

нет, они оба верны. Скажем, сетка имеет 15 строк видимых строк, затем я должен перейти к позиции для первой записи с использованием. Сначала(), затем 15 раз вызовите .Next(), проверьте Eof() и отобразите данные для каждого столбца. – Eugen

+1

Тогда ваше первое утверждение ложно. Как вы обнаружили, DataGridView требует длины, чтобы он мог отображать полосу прокрутки и большой палец. Используйте [пейджер] (http://stackoverflow.com/questions/2825771/) или какой-либо другой элемент управления, который не требует длины. –

ответ

0

Выполнить подсчет количества запросов (*) из таблицы_имя где my_where_cluase; а затем используйте ту же самую my_where_cluase при заполнении сетки

+0

где в моем интерфейсе вы видели возможность вызова SQL-скрипта ??? Я не могу этого сделать, это может быть файл на диске, удаленный вызов веб-службы, что-то, не обязательно база данных SQL. – Eugen

+0

Eugen Этот XML или плоский файл или csv –

+0

Я не знаю, у меня есть только интерфейс, не думаю, что позади. – Eugen