Batch modification in ASP.NET
I have a page on my website where I have a list of climbs with a checkbox next to each one. I'd like to allow my user to check/uncheck each line and then click "update" to make all the changes at once.
Is there a way I can easily do this with GridView or Repeater, something else, or will I need to hand-code it?
Comments
- Anonymous
January 24, 2006
I've done this a number of times with a GridView control. While there may be other ways to do it, the way I've done it is to add a TemplateField, like:
<asp:TemplateField HeaderText="Select?">
<HeaderStyle HorizontalAlign="Left"/>
<ItemTemplate>
<asp:Checkbox ID="chkRowSelected" runat="server" />
</ItemTemplate>
</asp:TemplateField>
Each row in the GridView then gets a control with the specified ID. Then, in the handler for your Update button, you can iterate through all the GridView rows:
foreach (GridViewRow row in idOfGridView.Rows)
then find the checkbox control:
CheckBox cb = row.FindControl("chkRowSelected") as CheckBox;
and then test to see if it's been checked or not:
if ((cb != null) && (cb.Checked == true))
After that, perform your update for the row.
Hope that helps,
Donnie - Anonymous
January 24, 2006
I'm thinking that qualifies as hand-coding it... - Anonymous
January 25, 2006
Thanks, Donnie, that's exactly what I was looking for. - Anonymous
February 22, 2006
I'm trying to accomplish the same thing but in VB.Net. My problem is the checkbox(s) always evaluate to false. Here's some code:
Protected Sub btnMakeNew_Click(ByVal sender As Object, ByVal e As System.EventArgs)
'Dim vCheckArray As Array
Dim vRow As GridViewRow
Dim xyz As CheckBox
For Each vRow In VoiceMailGrid.Rows
'Response.Write(vRow.RowIndex())
'Response.End()
xyz = vRow.FindControl("CheckBox1")
If xyz.Checked = True Then
Response.Write(xyz.Checked())
Response.End()
End If
Next
End Sub
and the template definition:
<asp:TemplateField HeaderText="Hello World">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
Cheers,
rfm