私はGridView
にチェックボックスの列があります。ボタンをクリックすると、チェックボックスをオンにしたすべての行が削除されます。私は何とか奇妙でハッキリな解決策に遭遇しました。なぜそれが機能するのかわかりません。私はすでに関連するSOの質問を既に検索しました。ポストバック時にASP.NET CheckBoxが異常なハックなしでチェックされていない
関連コード:
Protected Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Init
' I have no idea why this is needed for the checkboxes to work...
Dim x = imageGridView.Rows
End Sub
Protected Sub RemoveButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles removeButton.Click
For Each row As GridViewRow In imageGridView.Rows
Dim selectCheckBox As CheckBox = DirectCast(row.Cells(0).FindControl("selectCheckBox"), CheckBox)
If selectCheckBox.Checked Then
Dim fileName As String = row.Cells(1).Text
ImageList.Remove(ImageList.FindLast(Function(r) r.FileName = fileName))
End If
Next
imageGridView.DataSource = ImageList
imageGridView.DataBind()
End Sub
ASPX:
<asp:GridView ID="imageGridView" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="selectCheckBox" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
線Dim x = imageGridView.Rows
を除去する行のために必要とされます。 Page_Init
のサブコードにRemoveButton_Click
コードを入れてから、コードが削除されてしまいました。 Dim x = imageGridView
で十分ではなく、同じことをPage_Load
で行うことはできません。
私のチェックボックスは無効になることはありません。
私はコードが正常に動作するために、Page_Init
のimageGridView.Rows
を参照する必要があるのはなぜですか?
完全なポストバックを行っているか、更新パネルを使用していますか? –
私は、 'addButton'がトリガーする' UpdatePanel'を持っていますが、グリッドはパネル内に含まれていません。 – mbomb007