Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.pcplan.com.br/lc.jpg&key=4e35eb42e6b73a14c949dc76100c6d047a060f7ae31b249a4c47bfcf1f3c38a5" alt="Imagem Postada" />
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.
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.
Arrivabene vou colocar o tópico como resolvido, mas espero que poste o resultado aqui pra galera.
Boa dica Ana.
Abraços...
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.
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.pcplan.com.br/solucaomergegridview.JPG&key=d39e659d8565c893c999d834cf90337390e1dd51cad571df7ade7c5905446c61" alt="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;
}<?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"](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;
}
}
}
}
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