1

这听起来很像这里的一堆其他问题,但我所读到的内容都没有跟上我所看到的。

我有一个 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" />

任何帮助(甚至是这么愚蠢的一记耳光)都将不胜感激。

4

0 回答 0