Jump to content

Dados intercalados em DataGridView


Recommended Posts

Posted

Olá pessoal,

Tenho uma gridview que apresenta dados de uma BD postgres. O que eu pretendo é intercalar o tipo de dados que apresento em cada linha, por exemplo:

|                       NOME                            | IDADE | SEXO |

|                        XPTO                            |     15    |    M    |

| campo de comentarios sobre o nome |             |           |

|                        ABCD                            |     15    |    M    |

| campo de comentarios sobre o nome |             |           |

 

Debaixo de cada linha de campos com nome idade e sexo, quero colocar um campo de comentarios, que estão guardados tambem em BD.

Alguem me consegue ajudar nesta situação? 👍

Posted

Boa tarde,

Se mostrares a estrutura das tabelas, isso fica bem mais simples.

Cordiais cumprimentos,

Apocasntos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted

Aqui vai:

<asp:Panel ID="Panel_gridview_project" runat="server" HorizontalAlign="Center">
        <asp:GridView ID="GridView_project" runat="server" HorizontalAlign="Center" BackColor="White"
            BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black"
            AutoGenerateDeleteButton="True" ShowFooter="True" AutoGenerateColumns="False" 
            AllowPaging="True" OnRowDeleting="gridview_RowDeleting" 
            OnRowDataBound="Grid_RowDataBound" DataKeyNames="project" 
            Font-Size="Smaller">
            <AlternatingRowStyle BackColor="White" />
            <Columns>
                <asp:TemplateField HeaderText="Road map of new products">
                <HeaderTemplate>
                    Road map of new products<br />
                    <asp:DropDownList ID="DropDownList0" runat="server" AppendDataBoundItems="true" 
                            ondblclick="this.size=1;" onfocusout="this.size=1;" 
                            onmousedown="this.size=5;">
                    <asp:ListItem>Green</asp:ListItem>
                    <asp:ListItem>Yellow</asp:ListItem>
                    <asp:ListItem>Red</asp:ListItem>
                    </asp:DropDownList>
        </HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label0" Text='<%# Eval("project") %>' 
                            runat="server"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Time scheduling" InsertVisible="False">
                    <HeaderTemplate>
                        Time scheduling<br />
                       <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true" 
                            ondblclick="this.size=1;" onfocusout="this.size=1;" 
                            onmousedown="this.size=5;">
                            <asp:ListItem>Green</asp:ListItem>
                            <asp:ListItem>Yellow</asp:ListItem>
                            <asp:ListItem>Red</asp:ListItem>
                        </asp:DropDownList>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("time_scheduling") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="B-Sample (Plant)">
                    <HeaderTemplate>
                        B-Sample (Plant)<br />
                        <asp:DropDownList ID="DropDownList2" runat="server" AppendDataBoundItems="true" 
                            ondblclick="this.size=1;" onfocusout="this.size=1;" 
                            onmousedown="this.size=5;">
                            <asp:ListItem>Green</asp:ListItem>
                            <asp:ListItem>Yellow</asp:ListItem>
                            <asp:ListItem>Red</asp:ListItem>
                        </asp:DropDownList>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label2" runat="server" Text='<%# Eval("b_sample") %>'></asp:Label>
                        <br />
                        <asp:Label ID="Label2_2" runat="server" Height="16px" 
                            style="text-align: center" Text='<%# Eval("top3_b_sample") %>' Width="90px"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
              <asp:TemplateField HeaderText="QA1">
                    <HeaderTemplate>
                        QA1<br />
                        <asp:DropDownList ID="DropDownList3" runat="server" AppendDataBoundItems="true" 
                            ondblclick="this.size=1;" onfocusout="this.size=1;" onmousedown="this.size=5;">
                        </asp:DropDownList>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label3" runat="server" Text='<%# Eval("qa1") %>'></asp:Label>
                        <br />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Design Validation">
                    <HeaderTemplate>
                        Design Validation<br />
                        <asp:DropDownList ID="DropDownList4" runat="server" AppendDataBoundItems="true" 
                            ondblclick="this.size=1;" onfocusout="this.size=1;" 
                            onmousedown="this.size=5;">
                            <asp:ListItem>Green</asp:ListItem>
                            <asp:ListItem>Yellow</asp:ListItem>
                            <asp:ListItem>Red</asp:ListItem>
                        </asp:DropDownList>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label4" runat="server" Text='<%# Eval("design_validation") %>'></asp:Label>
                        <br />
                        <asp:Label ID="Label4_2" runat="server" style="text-align: center" 
                            Text='<%# Eval("top3_design_validation") %>' Width="90px"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Design Freeze - Mechanical parts">
                    <HeaderTemplate>
                        Design Freeze - Mechanical parts<br />
                        <asp:DropDownList ID="DropDownList5" runat="server" AppendDataBoundItems="true" 
                            ondblclick="this.size=1;" onfocusout="this.size=1;" 
                            onmousedown="this.size=5;">
                            <asp:ListItem>Green</asp:ListItem>
                            <asp:ListItem>Yellow</asp:ListItem>
                            <asp:ListItem>Red</asp:ListItem>
                        </asp:DropDownList>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label5" runat="server" Text='<%# Eval("design_mechanical_parts") %>'></asp:Label>
                        <br />
                        <asp:Label ID="Label5_2" runat="server" style="text-align: center" 
                            Text='<%# Eval("top3_design_mechanical_parts") %>' Width="90px"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
			</Columns>
            <FooterStyle BackColor="#565656" />
            <HeaderStyle BackColor="#565656" ForeColor="White" HorizontalAlign="Center" 
                VerticalAlign="Middle" />
            <PagerSettings Mode="NextPrevious" />
            <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Center" />
            <RowStyle BackColor="White" />
            <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
            <SortedAscendingCellStyle BackColor="#FBFBF2" />
            <SortedAscendingHeaderStyle BackColor="#848384" />
            <SortedDescendingCellStyle BackColor="#EAEAD3" />
            <SortedDescendingHeaderStyle BackColor="#575357" />
        </asp:GridView>
    </asp:Panel>

A tabela que desenhei acima nada tem a ver com esta, foi um mero exemplo da estrutura que pretendo.

Por exemplo eu quero a Label2 a aparecer numa linha juntamente com o resto dos dados nessa linha e a label2_2 a aparecer por baixo da label2 noutra linha com o resto dos dados das label xpto_2 nessa linha.

Posted

Bom dia,

Eu referia-me à tabela da base de dados (nome dos campos de cada tabela).

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted
Agora, apocsantos disse:

Bom dia,

Eu referia-me à tabela da base de dados (nome dos campos de cada tabela).

Cordiais cumprimentos,

Apocsantos

A tabela é so uma com 72 colunas. mas para orientar pode usar as que estão chamadas no comando eval

Posted

Isso é muito vago... Esse campo de comentários pertence á mesma Row? Se for podes no SP fazeres 2 selects um para os dados outro para os comentários e depois no código crias uma relação no DataSet entre as duas Tables pelo ID e assim crias uma Band para o teu campo comentário logo por baixo da row onde tens os outros dados.

Posted

Conseguiste? Como não dizes nada, deixo aqui um exemplo

No teu exemplo --> table1 ID Nome Idade Sexo  Table2 --> ID Comentario

Metes as duas tables num DataSet e depois fazes:

DataSet ds = new DataSet();

//o teu codigo para carregar os dados da BD para o DataSet

ds.Relations.Add("NomeDaRelação", ds.Tables[0].Columns["ID"], ds.Tables[1].Columns["ID"]);

(tuaGrid).DataSource = ds;

A sintaxe pode ser um bocado diferente porque uso Infragistics

Na ultraGrid fico com 

Nome Idade Sexo

 --comentario

Nome Idade Sexo

 --comentario

 

Tens que fazer o Hide ao ID claro

Posted (edited)

"NomeDaRelação" é uma string, podes dar o nome que quiseres á relação. Se carregares o teu DataSet com 2 Selects ficas com duas DataTables mesmo que na realidade só exista uma. Num select trazes o ID, o Nome, a Idade e o Sexo e no outro select trazes o ID e o comentario. Crias uma relação entre as 2 tabelas pelo ID e depois no DataSource da tua Grid mandas o DataSet. Pelo menos na UltraGrid ele cria logo uma Band associada por cada ID e fica intercalado como pretendes.

Edited by _Rest_
Posted

Não tens que criar nada... Se leres com atenção o que escevi, disse para fazeres 2 SELECTS. Cada select devolve uma tabela de resultados certo, um DataSet guarda cada Select numa Table. Relacionas essas duas pelo ID e mandas o DataSet para o DataSource da grid. 

  • 1 month later...
Posted
Em 03/10/2016 às 18:17, _Rest_ disse:

"NomeDaRelação" é uma string, podes dar o nome que quiseres á relação. Se carregares o teu DataSet com 2 Selects ficas com duas DataTables mesmo que na realidade só exista uma. Num select trazes o ID, o Nome, a Idade e o Sexo e no outro select trazes o ID e o comentario. Crias uma relação entre as 2 tabelas pelo ID e depois no DataSource da tua Grid mandas o DataSet. Pelo menos na UltraGrid ele cria logo uma Band associada por cada ID e fica intercalado como pretendes.

Ainda não consegui resolver este problema. Podes pf colocar um exemplo do que dizes?

  • 3 months later...
Posted

Falha minha na solução que te dei, isso funciona numa UltraGrid (infragistics), a grid do windows não suporta multi bands. Com a do windows penso que para implementar relações seria necessário 2 grids uma para as parent rows e outra para as child rows.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.