Jump to content
999ANDRE999

Dados intercalados em DataGridView

Recommended Posts

999ANDRE999

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? :thumbsup:

Share this post


Link to post
Share on other sites
apocsantos

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"

Share this post


Link to post
Share on other sites
999ANDRE999

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.

Share this post


Link to post
Share on other sites
apocsantos

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"

Share this post


Link to post
Share on other sites
999ANDRE999
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

Share this post


Link to post
Share on other sites
_Rest_

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.

Share this post


Link to post
Share on other sites
_Rest_

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

Share this post


Link to post
Share on other sites
999ANDRE999

ola _Rest_

não ainda não consegui implementar. o que é esse "NomeDaRelação"?

eu so tenho uma tabela.

Share this post


Link to post
Share on other sites
_Rest_

"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_

Share this post


Link to post
Share on other sites
999ANDRE999

mas neste caso eu só tenho uma tabela para tudo. Terei que criar uma tabela à parte para colocação do comentário?

Share this post


Link to post
Share on other sites
_Rest_

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. 

Share this post


Link to post
Share on other sites
999ANDRE999
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?

Share this post


Link to post
Share on other sites
_Rest_

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.

Share this post


Link to post
Share on other sites

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.