Как сделать подкачку данных одной строки в ASP.NET

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

Если бы это был набор данных (несколько строк), то я мог бы показать его на сетке с подкачкой на стороне сервера.

Для одной большой строки, как фрагментировать ее постранично?

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

4 ответа

Может быть, что-то подобное (я не проверял это.)

    Открытая функция SplitBySize(ByVal strInput как строка, ByVal iSize как целое число) как строка () Dim strA () как строка Dim iLength как целое число = strInput.Length()
        Dim iWords как целое число = iLength / iSize + IIf((iLength Mod iSize  0)), 1, 0)
        ReDim strA(iWords)
        Dim j As Integer = 0, i As Integer
        For i = 0 Шаг iSize Шаг iSize
            strA(j) = Mid(strInput, i + 1, iSize)
            j = j + 1 Далее i Возвращает strA Функция завершения Sub Page_Load()

        Dim id As Integer = 5
        Dim page As Integer = 2
        Dim chrsCountPerPage As Integer = 1000

        Dim topic As String = "" '(Из s В темах, где s.id = id Выберите s).first().details

        Dim STopic = SplitBySize(topic, chrsCountPerPage)

        If page > STopic.Length Then
            page = 1
        End If

        lblTopic.text = STopic(page - 1)

    End Sub

Можете ли вы разделить текст статьи на разрывы абзацев и сделать List<string> из них, затем свяжите это со своими элементами управления Paging и Grid. Затем, когда страница будет отправлена ​​обратно, статья будет разделена на куски таким же образом, и подкачка будет работать.

Вы могли бы, конечно, кешировать List<string> между запросами на сохранение приходится заходить в базу данных и многократно обрабатывать записи.

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

var article = new ArticleRepository (). GetById (1);
// и здесь статья имеет свойство Pages, которое разделяет оригинальную статью на что угодно
datagrig.datasource = article.Pages;

Вы можете изменить логику в статье и свойстве Pages, если решите разделить статьи по-разному. И это не повлияет на страницу ASP.NET. Возможно, позже Вы решите, что на этой странице должна быть информация о том, что было на предыдущей или что на следующей странице. Тогда Page может иметь два свойства: PreviousPageExcerpt, NextPageExcerpt. Это лучше, чем конвертировать статью в массив строк. Имея всю логику в классе Article, вы также сможете тестировать модули, разделяя статьи на страницы.

Как насчет:

  • Вытащить данные в string[] от .Splitна некотором среднем размере линий
  • Добавить каждый элемент в DataRow
  • Назначьте .DataSource к столу

А затем наслаждайтесь пейджингом, предоставляемым GridView,

Вот как вы можете LINQ в string[]и связать результат с сеткой.

Другие вопросы по тегам