Ich habe eine GridView
mit einer Checkbox-Spalte. Wenn Sie auf eine Schaltfläche klicken, sollten alle Zeilen mit dem aktivierten Kontrollkästchen entfernt werden. Ich bin irgendwie auf eine seltsame und hacky Lösung gestoßen, und ich habe keine Idee, warum es funktioniert. Ich habe bereits verwandte SO-Fragen bereits durchsucht.ASP.NET CheckBox nicht auf Postback ohne seltsamen Hack überprüft
Verwandte Code:
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>
Die Linie Dim x = imageGridView.Rows
wird für die Zeilen erforderlich entfernt werden. Ich fand das, nachdem ich meinen RemoveButton_Click
Code in dem Page_Init
Sub versucht hatte und dann Code entfernte, bis es nicht mehr funktionierte. Dim x = imageGridView
ist nicht genug, und es funktioniert nicht, um das Gleiche in Page_Load
zu tun.
Meine Kontrollkästchen sind nie deaktiviert.
Also, einfach ausgedrückt, warum ist es für mich notwendig imageGridView.Rows
im Page_Init
für meinen Code zu verweisen zu arbeiten?
Machst du einen vollständigen Postback oder verwenden Update-Panels? –
Ich habe ein 'UpdatePanel', das den' addButton' auslöst, aber das Gitter ist nicht im Panel enthalten. – mbomb007