Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Arrivabene

[Resolvido] Merge de linhas iguais no GridView

Recommended Posts

Pessoal,

 

eu já dei uma pesquisada por aí, e não encontrei nenhuma solução para resolver o meu problema.

Estou migrando um sistema de ASP para asp.net.

 

Estou postando a imagem aqui para que vocês entendam do que estou falando.

Essa figura é do sistema que está em ASP. Por acaso vocês conhecem alguma forma de eu reproduzir esta mesma formatação no asp.net com o GridView ou com algum outro componete?

 

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Romulo é o seguinte:

 

Se esses dados estiverem em uma tabela do banco de dados basta, você criar uma gridview dentro da outra.

Por exemplo, A tabela mãe terá uma query que listará os devidos registros e a tabela Filha listará os registros de acordo com o id_mãe relacionados a eles.

 

Registro mae (Id = 1)

Registro Filho (Id_mae = 1)

Registro Filho (Id_mae = 1)

Registro Filho (Id_mae = 1)

Registro mae (Id = 2)

Registro Filho (Id_mae = 2)

Registro Filho (Id_mae = 2)

Registro Filho (Id_mae = 2)

Registro Filho (Id_mae = 2)

Registro mae (Id = 3)

Registro Filho (Id_mae = 3)

 

Espero que tenha dado pra entender.

 

Ana

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, legal.

 

Vou procurar a respeito. Essa é uma luz no fim do túnel.

 

Se eu conseguir eu posto o resultado aqui.

 

Obrigado mesmo Ana.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer, muito ninja hein!

Vou dar uma ajeitada legal, e vou postar direitinho aqui o que eu fiz e como ficou.

 

Obrigado mais uma vez Srta. Ana.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, como prometido, eis a solução.

Ficou assim. Logo abaixo da imagem, tem a codificação.

Pessoal, essa foi legal. Espero que possa ser útil para muita gente.

Há aqui também os métodos que estão sendo usados.

 

Imagem Postada

 

Trechos do código da classe DBTools que fará a conexão e execução no Banco de dados.

 

#region Construtor
	public DBTools()
	{
		ConectaDB();
	}
	#endregion


	protected void ConectaDB()
	{
		if (cn == null)
		{
			cn = new SqlConnection(ConfigurationManager.ConnectionStrings["STRING_DE_CONEXAO_NO_WEB_CONFIG"].ConnectionString);
		}
	}
	
	
	public DataSet RecuperaDataSet(SqlCommand cmd)
	{
		
		cmd.Connection = cn;
		SqlDataAdapter da = new SqlDataAdapter();
		da.SelectCommand = cmd;
		DataSet ds = new DataSet();
		da.Fill(ds);
		return ds;
	}

Trecho do código do webconfig onde é armazenado a string de conexão

 

<?xml version="1.0"?>
<configuration>

	<connectionStrings>
		<clear/>

		<add name="STRING_DE_CONEXAO_NO_WEB_CONFIG" connectionString="Data Source=localhost;Initial Catalog=MeuBanco;Persist Security Info=True;User ID=sa;Password=senhadoseubancodedados"/>

	</connectionStrings>

</configuration>

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
	<title>Hierarquia GridView</title>
</head>
<body>
	<form id="form1" runat="server">
		<div>
			<asp:ScriptManager ID="ScriptManager1" runat="server">
			</asp:ScriptManager>
			 </div>
		<asp:UpdatePanel ID="UpdatePanel1" runat="server">
			<ContentTemplate>
			<table>
				<tr>
					<td>
						<asp:GridView ID="GridView1" runat="server" ShowHeader="False" AutoGenerateColumns="False"
							OnRowDataBound="GridView1_RowDataBound" CellPadding="3" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellSpacing="2">
							
							<Columns>
									
								<asp:BoundField DataField="NAT_ID" HeaderText="Código Nat." SortExpression="NAT_ID" Visible="False" >
									<ItemStyle HorizontalAlign="Left" />
								</asp:BoundField>
								<asp:BoundField DataField="NAT_RECDESP" HeaderText="Nat." SortExpression="NAT_RECDESP" >
									<ItemStyle HorizontalAlign="Left" />
								</asp:BoundField>
																	
								<asp:TemplateField>
								
									<ItemTemplate>

										<asp:GridView ID="GridView2" runat="server" ShowHeader="False" AutoGenerateColumns="False"
											OnRowDataBound="GridView2_RowDataBound1" CellPadding="3" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellSpacing="2">
											 
												<Columns>
													
													<asp:BoundField DataField="NAT_ID" Visible="False">
													</asp:BoundField>
													
													<asp:BoundField DataField="NAT_DESCRICAO">
													</asp:BoundField>
																						
													<asp:TemplateField>
													
														<ItemTemplate>
															
															<asp:GridView ID="GridView3" runat="server" ShowHeader="False" AutoGenerateColumns="False" CellPadding="3" OnRowDataBound="GridView3_RowDataBound" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellSpacing="2">
																
																<Columns>
																
																	<asp:BoundField  DataField="CLA_ID" Visible="False">
																	</asp:BoundField>
																	
																	<asp:BoundField  DataField="CLA_DESCRICAO">
																	</asp:BoundField>
																	
																	<asp:TemplateField>
																	
																		<ItemTemplate>
																		
																			<asp:GridView ID="GridView4" runat="server" ShowHeader="False" AutoGenerateColumns="False" CellPadding="3" OnRowDataBound="GridView4_RowDataBound" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellSpacing="2">
																				
																				<Columns>
																					
																					<asp:BoundField  DataField="SUB_ID" Visible="False">
																					</asp:BoundField>
																					
																					<asp:BoundField  DataField="SUB_DESCRICAO">
																					</asp:BoundField>
																					
																					<asp:BoundField  DataField="SUB_ATIVO">
																					</asp:BoundField>																	
																					
																					<asp:TemplateField>
																	
																						<ItemTemplate>
																						
																							<asp:GridView ID="GridView5" runat="server" ShowHeader="False" AutoGenerateColumns="False" CellPadding="3" OnRowDataBound="GridView5_RowDataBound" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellSpacing="2">
																							
																								<Columns>
																							
																									<asp:BoundField  DataField="ITE_ID" Visible="False">
																									</asp:BoundField>
																									
																									<asp:BoundField  DataField="ITE_DESCRICAO">
																									</asp:BoundField>
																									
																								</Columns>
																								<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
																								<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
																								<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
																								<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
																								<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
																							
																							</asp:GridView>
																							
																			
																						</ItemTemplate>
																						
																					</asp:TemplateField>
																					
																				
																				</Columns>
																				<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
																				<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" VerticalAlign="Top" />
																				<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
																				<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
																				<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
																				
																			</asp:GridView>
																			
																		</ItemTemplate>
																		
																	</asp:TemplateField>
																	
																</Columns>
																<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
																<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" VerticalAlign="Top" />
																<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
																<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
																<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
																
															</asp:GridView>

														</ItemTemplate>
													
													</asp:TemplateField>
													
												</Columns>
												<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
												<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" VerticalAlign="Top" />
												<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
												<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
												<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
											
											
										</asp:GridView>
										
									</ItemTemplate>
										
								</asp:TemplateField>
										
							</Columns>
							<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
							<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" VerticalAlign="Top" />
							<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
							<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
							<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
							
						</asp:GridView>

					</td>
				</tr>
			</table>
			</ContentTemplate>
		</asp:UpdatePanel>
	</form>
</body>
</html>

 

 

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
	DBTools db = new DBTools();

	protected void Page_Load(object sender, EventArgs e)
	{

		
		SqlCommand cmd = new SqlCommand();
		cmd.CommandType = CommandType.Text;
		cmd.CommandText = "SELECT NAT_ID, NAT_RECDESP, NAT_DESCRICAO, NAT_ATIVO FROM NATUREZA";

		GridView1.DataSource = db.RecuperaDataSet(cmd);
		GridView1.DataBind();

	}

	


	protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
	{
		if (e.Row.RowType == DataControlRowType.DataRow)
		{
			GridView gridViewResource = (GridView)e.Row.FindControl("GridView2");
			string NAT_RECDESP = ((DataRowView)e.Row.DataItem)["NAT_RECDESP"].ToString();

			if (!string.IsNullOrEmpty(NAT_RECDESP))
			{
				SqlCommand cmd = new SqlCommand();
				cmd.CommandType = CommandType.Text;
				cmd.CommandText = "SELECT NAT_ID, NAT_RECDESP, NAT_DESCRICAO, NAT_ATIVO FROM NATUREZA WHERE NAT_RECDESP = " + Convert.ToInt32(NAT_RECDESP);

				DataSet ds = db.RecuperaDataSet(cmd);

				gridViewResource.DataSource = ds;
				gridViewResource.DataBind();
			}
			else
				gridViewResource.Visible = false;
		}
	}



	protected void GridView2_RowDataBound1(object sender, GridViewRowEventArgs e)
	{
		if (e.Row.RowType == DataControlRowType.DataRow)
		{
			GridView gridViewResource = (GridView)e.Row.FindControl("GridView3");
			string NAT_ID = ((DataRowView)e.Row.DataItem)["NAT_ID"].ToString();

			if (!string.IsNullOrEmpty(NAT_ID))
			{
				SqlCommand cmd = new SqlCommand();
				cmd.CommandType = CommandType.Text;
				cmd.CommandText = "SELECT CLA_ID, NAT_ID, CLA_DESCRICAO, CLA_ATIVO FROM CLASSE WHERE NAT_ID = " + Convert.ToInt32(NAT_ID);

				DataSet ds = db.RecuperaDataSet(cmd);

				gridViewResource.DataSource = ds;
				gridViewResource.DataBind();
			}
			else
				gridViewResource.Visible = false;
		}
	}

	protected void GridView3_RowDataBound(object sender, GridViewRowEventArgs e)
	{
		if (e.Row.RowType == DataControlRowType.DataRow)
		{
			GridView gridViewSub = (GridView)e.Row.FindControl("GridView4");
			string CLA_ID = ((DataRowView)e.Row.DataItem)["CLA_ID"].ToString();

			if (!string.IsNullOrEmpty(CLA_ID))
			{
				SqlCommand cmdSub = new SqlCommand();
				cmdSub.CommandType = CommandType.Text;
				cmdSub.CommandText = "SELECT SUB_ID, CLA_ID, SUB_DESCRICAO, SUB_ATIVO FROM SUBCLASSE WHERE CLA_ID = " + Convert.ToInt32(CLA_ID);

				DataSet ds = db.RecuperaDataSet(cmdSub);

				gridViewSub.DataSource = ds;
				gridViewSub.DataBind();
			}
			else
				gridViewSub.Visible = false;



		}
	}
	protected void GridView4_RowDataBound(object sender, GridViewRowEventArgs e)
	{
		if (e.Row.RowType == DataControlRowType.DataRow)
		{
			GridView gridViewIte = (GridView)e.Row.FindControl("GridView5");
			string SUB_ID = ((DataRowView)e.Row.DataItem)["SUB_ID"].ToString();

			if (!string.IsNullOrEmpty(SUB_ID))
			{
				SqlCommand cmdSub = new SqlCommand();
				cmdSub.CommandType = CommandType.Text;
				cmdSub.CommandText = "SELECT ITE_ID, SUB_ID, ITE_DESCRICAO FROM ITEM WHERE SUB_ID = " + Convert.ToInt32(SUB_ID);

				DataSet ds = db.RecuperaDataSet(cmdSub);

				gridViewIte.DataSource = ds;
				gridViewIte.DataBind();
			}
			else
				gridViewIte.Visible = false;



			string SUB_ATIVO = ((DataRowView)e.Row.DataItem)["SUB_ATIVO"].ToString();
			if (SUB_ATIVO.ToString().Equals("S"))
			{
				e.Row.Cells[2].ForeColor = System.Drawing.Color.Blue;
				e.Row.Cells[2].Font.Bold = true;
			}
			else
			{
				e.Row.Cells[2].ForeColor = System.Drawing.Color.Red;
				e.Row.Cells[2].Font.Bold = true;
			}
		}
	}

	protected void GridView5_RowDataBound(object sender, GridViewRowEventArgs e)
	{

		if (e.Row.RowType == DataControlRowType.DataRow)
		{
			string ITE_ID = ((DataRowView)e.Row.DataItem)["ITE_DESCRICAO"].ToString();

			if (ITE_ID.ToString().Equals(""))
			{
				e.Row.Cells[1].Text = "Item Preenchível";
				e.Row.Cells[1].ForeColor = System.Drawing.Color.Red;
				e.Row.Cells[1].Font.Bold = true;
			}

		}
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.