Перебор всех элементов в пейджинге включил управление GridView и сохранил все сразу - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть элемент управления <asp:GridView> на странице, которая показывает список элементов.Я включил подкачку для управления AllowPaging="True".Для свойства столбца есть текстовые поля, а другие подробности доступны только для чтения.Я хочу внести изменения во все текстовые поля элементов и хочу сохранить все сразу на основе условия.

Теперь моя проблема связана с включенной подкачкой страниц, когда я нажимаю кнопку Сохранить изменения на любой странице, List.Rows возвращает только элементы на текущей странице, а не на всех страницах.Еще одна проблема, которую я обнаружил, - если я внесу изменения на первой странице, перейду на вторую страницу и внесу изменения, а затем перейду на первую страницу, сделанные мной изменения исчезнут, поэтому, возможно, даже моя первая проблема будет решена, она останется проблемой.Кто-нибудь может предложить, какие изменения могут быть сделаны, чтобы этот сценарий работал?

Ниже приведен пример кода для справки. ASPX:

<asp:GridView Id="foo" runat="server" AllowPaging="True" DataSourceID="bar">
.
.
    <Columns>
    .
    .
        <asp:TemplateField>
            <ItemTemplate>
                <asp:TextBox /> //This is editable and I need to save all items at once
                .
                .
                .
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
.
.
<asp:GridView>
.
.
<asp:objectdatasource ID="bar" .... />
<asp:Button ID="savechanges" . . . . />

VB

Protected Sub savechanges_Click(....)
.
.
    For Each element in foo.Rows  //Here I get only current page rows, not all, plus when I go to next page, previous pages value flushes.
        baz.Property = textbox.value //For sample, reading value for calculation
    Next

    Calc() //Some way to calculate all changed values

    If pass Then
        Save()
    Else
        Cancel()
    End If
End Sub

1 Ответ

0 голосов
/ 05 декабря 2018

Вы не можете этого сделать.GridView содержит только количество строк, видимых на странице.Таким образом, при пейджинге сохраняйте изменения этой страницы в некоторых временных данных, например List<class> или DataTable, и перезагружайте GridView оттуда при пейджинге.Таким образом, у вас есть все изменения, и вы можете сохранить их все сразу, выполнив итерации элементов в наборе данных.

Или вы можете сохранить изменения для каждой страницы вместо всех сразу.Это будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...