これは、ここにある他の多くの質問のように聞こえますが、私が読んだものは、私が見ているものに従っていません.
多数のバインドされたフィールドと、チェックボックスを含むいくつかのテンプレート フィールドを含むグリッドビューがあります。グリッドビューは、ページロード時に (「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)
何をしても、ユーザーが変更したグリッドビューのチェックボックスのチェック値を取得できません。すべてのチェックボックスは元の状態 (データ バインドで設定) のままです。
これはおそらくページのライフサイクルの問題ですが、私の人生では、ポストバック後にユーザーの変更が保持されない理由を理解できません。チェックしました。
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" />
どんな助けでも(とても愚かであることに対する平手打ちでさえ)、大いに感謝します。