我在显示元素列表的页面上有一个<asp:GridView>
控件。我已启用控件AllowPaging="True"
的分页。有用于列属性的TextBoxes,其他详细信息是只读的。我想在所有元素文本字段中进行更改,并希望根据条件一次保存所有内容。
现在,我的问题是由于启用了页面调度,当我单击任意页面上的保存更改时,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
答案 0 :(得分:0)
您不能那样做。 GridView仅包含页面上可见的行数。因此,在分页时,将页面的更改存储在一些临时数据中,例如List<class>
或DataTable
,并在分页时从那里重新加载GridView。
这样,您可以进行所有更改,并可以通过迭代数据集中的项目一次保存所有更改。
或者您可以保存每页的更改,而不是一次保存所有更改。可以。