I have a
GridView with a checkbox column. On clicking a button, all rows with the checkbox checked should be removed. I somehow stumbled upon a strange and hacky solution, and I have no idea why it works. I already searched through related SO questions already.
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
<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 is needed for the rows to be removed. I found this after trying my
RemoveButton_Click code in the
Page_Init sub, then removing code until it didn't work anymore.
Dim x = imageGridView is not enough, and it doesn't work to do the same thing in
My checkboxes are never disabled.
So, simply put, why is it necessary for me to reference
imageGridView.Rows in the
Page_Init for my code to work?