这听起来很像这里的一堆其他问题,但我所读到的内容都没有跟上我所看到的。
我有一个 gridview,其中包含许多绑定字段和几个包含复选框的模板字段。gridview 在页面加载时绑定到自定义数据源(在“not page.ispostback()”条件内)。用户可以选中复选框以指定某些操作,然后在单击链接按钮时提交这些操作。
链接按钮的点击事件中包含以下代码:
For Each row As GridViewRow In UnpaidEntriesGridView.Rows
Dim paidCheckbox As CheckBox = CType(row.FindControl("PaidCheckbox"), CheckBox)
If paidCheckbox.Checked Then
// perform database action
End If
Next
Initialise() // (this rebinds the gridview)
无论我做什么,我都无法获取用户已更改的网格视图中任何复选框的选中值。所有复选框都保持其原始状态(在数据绑定上设置)。
这很可能是一个页面生命周期问题,但对于我的生活,我无法弄清楚为什么用户的更改在回发后没有持续存在,尽管事实上 gridview 直到我之后才反弹已经检查过了。
ViewState 已启用,否则这里的一切都很标准。
来自 ascx 的 Gridview 代码片段如下:
<asp:GridView ID="UnpaidEntriesGridView" runat="server" AutoGenerateColumns="false" EnableViewState="true">
<Columns>
<asp:BoundField HeaderText="Entry Name" DataField="EntryName" />
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="PaidCheckbox" runat="server" EnableViewState="true" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:LinkButton ID="UnpaidEntriesSaveLinkButton" runat="server" Text="Commit Changes" />
任何帮助(甚至是这么愚蠢的一记耳光)都将不胜感激。