ASPForums.Net RSS Feedhttp://www.aspforums.net/Handlers/RSS.ashxLatest additions to the content that appears on ASPForums.Net(c) 2019 www.aspforums.com. All rights reserved.Merge ASP.Net GridView Cells or Columns in Row with CheckBox using C# and VB.Net<p>Hey <a class="username" rel="dorsa"> dorsa</a>,</p> <p>Please refer below sample.</p> <p><span style="text-decoration: underline;"><strong>HTML</strong></span></p> <pre class="brush: html">&lt;asp:GridView ID=&#34;GridView1&#34; runat=&#34;server&#34; AutoGenerateColumns=&#34;False&#34; OnDataBound=&#34;OnDataBound&#34;&gt; &lt;Columns&gt; &lt;asp:BoundField DataField=&#34;ContactName&#34; HeaderText=&#34;ContactName&#34; ItemStyle-Width=&#34;150&#34; SortExpression=&#34;ContactName&#34;&gt; &lt;HeaderStyle CssClass=&#34;header-center&#34;&gt;&lt;/HeaderStyle&gt; &lt;ItemStyle Width=&#34;150px&#34;&gt;&lt;/ItemStyle&gt; &lt;/asp:BoundField&gt; &lt;asp:BoundField DataField=&#34;City&#34; HeaderText=&#34;City&#34; ItemStyle-Width=&#34;150&#34; SortExpression=&#34;City&#34;&gt; &lt;HeaderStyle CssClass=&#34;header-center&#34;&gt;&lt;/HeaderStyle&gt; &lt;ItemStyle Width=&#34;150px&#34;&gt;&lt;/ItemStyle&gt; &lt;/asp:BoundField&gt; &lt;asp:BoundField DataField=&#34;Country&#34; HeaderText=&#34;Country&#34; ItemStyle-Width=&#34;150&#34; SortExpression=&#34;Country&#34;&gt; &lt;HeaderStyle CssClass=&#34;header-center&#34;&gt;&lt;/HeaderStyle&gt; &lt;ItemStyle Width=&#34;150px&#34;&gt;&lt;/ItemStyle&gt; &lt;/asp:BoundField&gt; &lt;asp:TemplateField HeaderText=&#34;select&#34;&gt; &lt;ItemTemplate&gt; &lt;asp:CheckBox ID=&#34;chkSelect&#34; runat=&#34;server&#34; AutoPostBack=&#34;true&#34; /&gt; &lt;/ItemTemplate&gt; &lt;/asp:TemplateField&gt; &lt;/Columns&gt; &lt;HeaderStyle BackColor=&#34;#3AC0F2&#34; ForeColor=&#34;White&#34;&gt;&lt;/HeaderStyle&gt; &lt;/asp:GridView&gt;</pre> <p><span style="text-decoration: underline;"><strong>Namespaces</strong></span></p> <p><strong>C#</strong></p> <pre class="brush: csharp">using System.Data; using System.Data.SqlClient; using System.Configuration;</pre> <p><strong>VB.Net</strong></p> <pre class="brush: vb">Imports System.Data.SqlClient Imports System.Data</pre> <p><span style="text-decoration: underline;"><strong>Code</strong></span></p> <p><strong>C#</strong></p> <pre class="brush: csharp">protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { DataTable dt = new DataTable(); GridView1.DataSource = GetData(&#34;SELECT ContactName, Country, City FROM Customers GROUP BY Country, City, ContactName&#34;); GridView1.DataBind(); } } private DataTable GetData(string query) { DataTable dt = new DataTable(); string constr = ConfigurationManager.ConnectionStrings[&#34;constr&#34;].ConnectionString; using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand cmd = new SqlCommand(query)) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.CommandType = CommandType.Text; cmd.Connection = con; sda.SelectCommand = cmd; sda.Fill(dt); } } return dt; } } protected void OnDataBound(object sender, EventArgs e) { for (int i = GridView1.Rows.Count - 1; i &gt; 0; i--) { GridViewRow row = GridView1.Rows[i]; GridViewRow previousRow = GridView1.Rows[i - 1]; CheckBox chk = row.FindControl(&#34;chkSelect&#34;) as CheckBox; int count = row.Cells.Count - 1; for (int j = 0; j &lt; row.Cells.Count - 1; j++) { if (row.Cells[j].Text == previousRow.Cells[j].Text) { if (previousRow.Cells[j].RowSpan == 0) { if (row.Cells[j].RowSpan == 0) { previousRow.Cells[j].RowSpan += 2; previousRow.Cells[count].RowSpan = 2; } else { previousRow.Cells[j].RowSpan = row.Cells[j].RowSpan + 1; previousRow.Cells[count].RowSpan = row.Cells[j].RowSpan + 1; } chk.Visible = false; row.Cells[j].Visible = false; row.Cells[j + 1].Visible = false; } } } } }</pre> <p><strong>VB.Net</strong></p> <pre class="brush: vb">Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Me.IsPostBack Then Dim dt As New DataTable() GridView1.DataSource = GetData(&#34;SELECT ContactName, Country, City FROM Customers GROUP BY Country, City, ContactName&#34;) GridView1.DataBind() End If End Sub Private Function GetData(query As String) As DataTable Dim dt As New DataTable() Dim constr As String = ConfigurationManager.ConnectionStrings(&#34;constr&#34;).ConnectionString Using con As New SqlConnection(constr) Using cmd As New SqlCommand(query) Using sda As New SqlDataAdapter() cmd.CommandType = CommandType.Text cmd.Connection = con sda.SelectCommand = cmd sda.Fill(dt) End Using End Using Return dt End Using End Function Protected Sub OnDataBound(sender As Object, e As EventArgs) For i As Integer = GridView1.Rows.Count - 1 To 1 Step -1 Dim row As GridViewRow = GridView1.Rows(i) Dim chk As CheckBox = TryCast(row.FindControl(&#34;chkSelect&#34;), CheckBox) Dim count As Integer = row.Cells.Count - 1 Dim previousRow As GridViewRow = GridView1.Rows(i - 1) For j As Integer = 0 To row.Cells.Count - 2 If row.Cells(j).Text = previousRow.Cells(j).Text Then If previousRow.Cells(j).RowSpan = 0 Then If row.Cells(j).RowSpan = 0 Then previousRow.Cells(j).RowSpan += 2 previousRow.Cells(count).RowSpan = 2 Else previousRow.Cells(j).RowSpan = row.Cells(j).RowSpan + 1 previousRow.Cells(count).RowSpan = row.Cells(count).RowSpan + 1 End If chk.Visible = False row.Cells(j).Visible = False row.Cells(count).Visible = False End If End If Next Next End Sub</pre> <p><span style="text-decoration: underline;"><strong>Screenshot</strong></span></p> <p><img src="https://imgur.com/z8BntXr.jpg" alt="" width="403" height="450" /></p>https://www.aspforums.net:443/Threads/157502/Merge-ASPNet-GridView-Cells-or-Columns-in-Row-with-CheckBox-using-C-and-VBNet/https://www.aspforums.net:443/Threads/157502/Merge-ASPNet-GridView-Cells-or-Columns-in-Row-with-CheckBox-using-C-and-VBNet/Wed, 26 Dec 2018 02:50:53 GMT