这听起来很像这里的一堆其他问题,但我读过的内容并没有按照我所看到的内容进行。
我有一个gridview,其中包含许多绑定字段和一些包含复选框的模板字段。 gridview绑定到pageload上的自定义数据源(在“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中任何复选框的选中值。所有复选框保持原始状态(在数据绑定上设置)。
这很可能是一个页面生命周期问题,但对于我的生活,我无法弄清楚为什么用户的更改在回发后不会保留,尽管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" />
任何帮助(即使是如此愚蠢的一记耳光)都会受到大力赞赏。