C# .NET - How to select the multiple checkboxes in gridview

Asked By Niranji Jana on 09-Oct-09 04:23 AM
Hello,
How to select the multiple checkboxes in gridview?

Please tell me how to do this task...............

 Thanks in advance

select the multiple checkboxes in gridview

DL M replied to Niranji Jana on 09-Oct-09 04:32 AM
Try this code

ASPX Code Sample


<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="PersonID"
DataSourceID="mySource" Width="366px" CellPadding="4"
ForeColor="#333333" GridLines="None">
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="PersonID" HeaderText="PersonID"
InsertVisible="False" ReadOnly="True" SortExpression="PersonID" />
<asp:BoundField DataField="Name" HeaderText="Name"
SortExpression="Name" />
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
<HeaderTemplate>
</HeaderTemplate>
</asp:TemplateField>

</Columns>

<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333"
HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
Code Behind

// StringBuilder object

StringBuilder str = new StringBuilder();

// Select the checkboxes from the GridView control

for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
bool isChecked = ((CheckBox) row.FindControl("chkSelect")).Checked;

if (isChecked)
{
// Column 2 is the name column

str.Append(GridView1.Rows[i].Cells[2].Text);
}
}

// prints out the result

Response.Write(str.ToString());
more details
http://www.codeproject.com/KB/webforms/SelChkboxesDataGridView.aspx?msg=2328913

You will also get another example from this link
http://www.ilearnttoday.com/index.php/c-aspnet-gridview-select-multiple-rows-in-a-grid-view-using-check-boxes

reply

Deepak Sonawane replied to Niranji Jana on 09-Oct-09 04:42 AM
Hi,
The HTML code looks something like this:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
   AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="PersonID"
   DataSourceID="mySource" Width="366px" CellPadding="4"
   ForeColor="#333333" GridLines="None">
 <Columns>
   <asp:CommandField ShowSelectButton="True" />
   <asp:BoundField DataField="PersonID" HeaderText="PersonID"
         InsertVisible="False" ReadOnly="True" SortExpression="PersonID" />
   <asp:BoundField DataField="Name" HeaderText="Name"
                                       SortExpression="Name" />
   <asp:TemplateField HeaderText="Select">
    <ItemTemplate>
       <asp:CheckBox ID="chkSelect" runat="server" />
    </ItemTemplate>
    <HeaderTemplate>
    </HeaderTemplate>
   </asp:TemplateField>

 </Columns>

 <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
 <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
 <PagerStyle BackColor="#FFCC66" ForeColor="#333333"
                           HorizontalAlign="Center" />
 <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
 <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
 <AlternatingRowStyle BackColor="White" />
</asp:GridView>

Now in the button click event, write this code:

// StringBuilder object

StringBuilder str = new StringBuilder();

// Select the checkboxes from the GridView control

for (int i = 0; i < GridView1.Rows.Count; i++)
{
  GridViewRow row = GridView1.Rows[i];
  bool isChecked = ((CheckBox) row.FindControl("chkSelect")).Checked;

  if (isChecked)
  {
    // Column 2 is the name column

    str.Append(GridView1.Rows[i].Cells[2].Text);
  }
}

// prints out the result

Response.Write(str.ToString());

The code above just iterates through the GridView and selects the checked checkboxes. Later it appends the selected value to a StringBuilder object. In order to use StringBuilder you will need to add the System.Text namespace.

reply

Deepak Sonawane replied to Niranji Jana on 09-Oct-09 04:47 AM
Hi,
if you want in windows application try this:
I think it is possible if you play with MouseUp event and Select method.

And although DataGrid control cannot give the selected rows indexes, we can save them to an ArrayList.

For example

Code Block

    Private datagrid As DataGrid

    Private selectedRows As ArrayList

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        selectedRows = New ArrayList()

 

        Dim datatable As New DataTable("parameter")

        datatable.Columns.Add("col1", GetType(Boolean))

        datatable.Columns.Add("col2", GetType(String))

        datatable.Rows.Add(False, "bcd")

        datatable.Rows.Add(False, "ABC")

        datatable.Rows.Add(False, "bcd")

        datatable.Rows.Add(False, "ABC")

        datatable.Rows.Add(False, "bcd")

        datatable.Rows.Add(False, "ABC")

        datatable.Rows.Add(False, "bcd")

        datatable.Rows.Add(False, "ABC")

        datatable.Rows.Add(False, "bcd")

        datatable.Rows.Add(False, "ABC")

 

        datagrid = New DataGrid()

        datagrid.Width = 400

        datagrid.Height = 300

 

        datagrid.DataSource = datatable

 

        Dim boolColumn As New DataGridBoolColumn()

        boolColumn.AllowNull = False

        boolColumn.Width = 20

        boolColumn.MappingName = "col1"

        Dim textColumn As New DataGridTextBoxColumn()

        textColumn.HeaderText = "col2"

        textColumn.MappingName = "col2"

 

        Dim dgt As New DataGridTableStyle()

        dgt.MappingName = "parameter"

        dgt.GridColumnStyles.Add(boolColumn)

        dgt.GridColumnStyles.Add(textColumn)

 

        datagrid.TableStyles.Add(dgt)

 

        Me.Controls.Add(datagrid)

        AddHandler datagrid.MouseUp, AddressOf datagrid_MouseUp

    End Sub

 

    'ArrayList to save the selected Rows.

    Private Sub datagrid_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs)

        Dim hit As DataGrid.HitTestInfo = datagrid.HitTest(e.X, e.Y)

        If hit.Column = 0 AndAlso hit.Type = DataGrid.HitTestType.Cell Then

            datagrid(hit.Row, hit.Column) = Not CBool(datagrid(hit.Row, hit.Column))

            If CBool(datagrid(hit.Row, hit.Column)) Then

                'If the checkbox is selected, add the row to ArrayList

                selectedRows.Add(hit.Row)

                datagrid.[Select](hit.Row)

            Else

                'If not, remove the row from ArrayList

                selectedRows.Remove(hit.Row)

            End If

            For i As Integer = 0 To selectedRows.Count - 1

                'Select all the selected rows

                datagrid.[Select](Convert.ToInt32(selectedRows(i)))

            Next

        End If

    End Sub

 

 

More info

http://msdn2.microsoft.com/en-us/library/system.windows.forms.datagrid.select.aspx
Multiple Checkboxes
Vishal Chourasiya replied to Niranji Jana on 09-Oct-09 09:39 AM

Write in aspx page,

<script language="javascript">
   function SelectAll(ChK)
   {
     var gv=document.getElementById("gvCustomer");
     for(var i=0;i<=gv.rows.length-1;i++)
     {
       var chk= gv.rows(i).cells(0).firstChild;     
       if(ChK.checked==true)
       {
         chk.checked=true;
       }
       else
       {
         chk.checked=false;
       }
     }
   }
   </script>

<asp:GridView ID="gvCustomer" runat="server" AllowPaging="True" AutoGenerateColumns="False" AllowSorting="True" CellPadding="4" >
            <Columns>
             <asp:TemplateField>
             <HeaderTemplate>
             <asp:CheckBox ID="chkDelAll" runat="server" onclick="return SelectAll(this);" />
             </HeaderTemplate>
            
            <ItemTemplate>
                <asp:CheckBox ID="chkDelete" runat="server" />
                <asp:Label ID="lblid" runat="server" Text='<%#Eval("Id") %>' Visible="false"></asp:Label>
            </ItemTemplate>
                 <HeaderStyle Width="20px" />
            </asp:TemplateField>

</Columns>              
</asp:GridView>

I am sure, none of the code samples posted above would suffice
[)ia6l0 iii replied to Niranji Jana on 09-Oct-09 10:59 AM
http://aspnet.4guysfromrolla.com/articles/052406-1.aspx

Click the link above, and implement the one that you need. The article covers simple way of achieving this behavior on client side and server side.