none
Concatenar colunas no GridView RRS feed

  • Pergunta

  • Como concatenar colunas no meu GridView abaixo:

     <asp:BoundField DataField="DIAM2" HeaderText="" SortExpression="DIAM2"
                ReadOnly="True" HeaderStyle-Width="50px" >
                <ItemStyle HorizontalAlign="Center"></ItemStyle>
                </asp:BoundField>

                <asp:BoundField DataField="DIAM1" HeaderText="" SortExpression="DIAM1"
                ReadOnly="True" HeaderStyle-Width="50px" >
                <ItemStyle HorizontalAlign="Center"></ItemStyle>
                </asp:BoundField>

    Eu quero que os campos DIAM1 DIAM2 fiquem na mesma coluna separados apenas com um espaço.

    Como faço isso ?

    Desde ja agradeço.

    Obrigado.

    <asp:boundfield DataField="DIAM2" HeaderStyle-Width="50px" HeaderText="" ReadOnly="True" SortExpression="DIAM2"><itemstyle HorizontalAlign="Center"></itemstyle></asp:boundfield><asp:boundfield DataField="DIAM1" HeaderStyle-Width="50px" HeaderText="" ReadOnly="True" SortExpression="DIAM1"><itemstyle HorizontalAlign="Center"></itemstyle></asp:boundfield>

               
    segunda-feira, 30 de setembro de 2013 12:26

Todas as Respostas

  • Cara, faz uma table e poe eles lá dentro que você trabalha melhor com eles:
    Aqui eles na mesma coluna:

     <div>
            <table>
                <tr>
                    <td>
                        <asp:BoundField DataField="DIAM2" HeaderText="" SortExpression="DIAM2" ReadOnly="True"
                            HeaderStyle-Width="50px">
                            <itemstyle horizontalalign="Center"></itemstyle>
                        </asp:BoundField>
                        <asp:BoundField DataField="DIAM1" HeaderText="" SortExpression="DIAM1" ReadOnly="True"
                            HeaderStyle-Width="50px">
                            <itemstyle horizontalalign="Center"></itemstyle>
                        </asp:BoundField>
                    </td>
                </tr>
            </table>
        </div>

    Aqui em linhas diferentes:

     <div>
            <table>
                <tr>
                    <td>
                        <asp:BoundField DataField="DIAM2" HeaderText="" SortExpression="DIAM2" ReadOnly="True"
                            HeaderStyle-Width="50px">
                            <itemstyle horizontalalign="Center"></itemstyle>
                        </asp:BoundField>
    </tr>
    <tr>
                        <asp:BoundField DataField="DIAM1" HeaderText="" SortExpression="DIAM1" ReadOnly="True"
                            HeaderStyle-Width="50px">
                            <itemstyle horizontalalign="Center"></itemstyle>
                        </asp:BoundField>
                    </td>
                </tr>
            </table>
        </div>

    se for útil marque como útil


    segunda-feira, 30 de setembro de 2013 12:51
  • Paulo com o DataFiel você não irá conseguir tente dessa maneira.

    <asp:TemplateField>
        <ItemTemplate>
             <asp:Label ID="lblDocId" runat="server" Text='<%#Eval("Seu Campo")%>?subject=<%#Eval("Seu Campo")%>">'></asp:Label>          
        </ItemTemplate>
    </asp:TemplateField>

    Espero que ajude. 

    Se ajudou marque.

    Abraço.


    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    segunda-feira, 30 de setembro de 2013 12:56
  • Como ja disse acima

    Da forma que esta abaixo os 2 ficam em 2 linhas

    <asp:BoundField DataField="DIAM2" HeaderText="" SortExpression="DIAM2" ReadOnly="True"
                           
    HeaderStyle-Width="50px">
                           
    <itemstyle horizontalalign="Center"></itemstyle>
                       
    </asp:BoundField>
                       
    <asp:BoundField DataField="DIAM1" HeaderText="" SortExpression="DIAM1" ReadOnly="True"
                           
    HeaderStyle-Width="50px">
                           
    <itemstyle horizontalalign="Center"></itemstyle>
                       
    </asp:BoundField>

    Por favor quero apenas deixar os 2 na mesma coluna no meu GridView quem souber e puder me ajudar eu agradeço.

    Obs: Não vou usar tabelas e sim o GridView.

    Obrigado

    segunda-feira, 30 de setembro de 2013 13:02
  • Como ja disse acima

    Da forma que esta abaixo os 2 ficam em 2 linhas

    <asp:BoundField DataField="DIAM2"HeaderText="" SortExpression="DIAM2"ReadOnly="True"
                          
    HeaderStyle-Width="50px">
                          
    <itemstyle horizontalalign="Center"></itemstyle>
                      
    </asp:BoundField>
                      
    <asp:BoundField DataField="DIAM1"HeaderText="" SortExpression="DIAM1"ReadOnly="True"
                          
    HeaderStyle-Width="50px">
                          
    <itemstyle horizontalalign="Center"></itemstyle>
                      
    </asp:BoundField>

    Por favor quero apenas deixar os 2 na mesma coluna no meu GridView quem souber e puder me ajudar eu agradeço.

    Obs: Não vou usar tabelas e sim o GridView.

    Obrigado

    segunda-feira, 30 de setembro de 2013 13:02
  • Paulo Tente dessa maneira, penso que a que postei não irá funcionar corretamente I'm sorry. 

    Lembrando utilize TempleateField

    Text='<%# String.Format("{0} {1}", Eval("Seu Campo"), Eval("Seu Campo")) %>'

    Abraço.


    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    segunda-feira, 30 de setembro de 2013 13:10
  • Fernando

    Eu ate entendi o seu codigo acima no meu Text=""

    Porem não entendi eu colocar no TempleatedField sendo que estou usando o BoundField

    Se puder coloque o codigo completo das 2 colunas em 1.

    Obrigado.

    Fico  no aguardo.

    segunda-feira, 30 de setembro de 2013 13:30
  • Essas são suas duas colunas com o TempleateField:

    <asp:TemplateField>
        <ItemTemplate>
             <asp:Label ID="lblDocId" runat="server" Text='<%# String.Format("{0} {1}", Eval("DIAM2"), Eval("DIAM1")) %>'></asp:Label>          
        </ItemTemplate>
    </asp:TemplateField>

    Você Irá tirar os BoudField e incluir apenas esse Template.

    Agora acho que você irá entender.

    Abraço. 


    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    segunda-feira, 30 de setembro de 2013 13:35
  • vc pode fazer isso na sua consulta no sql assim a informação já virá concatenada e vc coloca em apenas uma coluna

    sql = "select nome = campo1 + ' - ' + campo2 from tabela"


    Junior

    segunda-feira, 30 de setembro de 2013 13:36
  • So não entendi porque tem que colocar o string format

    Esses campos são nvarchar e não numeros.

    Tem alguma diferença ?

    Aguardo Retorno.

    Obrigado

    segunda-feira, 30 de setembro de 2013 19:52
  • O string format nesse caso serve para concatenar os campos Paulo e não para converter algum valor para outro tipo. 

    Segue documentação: http://msdn.microsoft.com/pt-br/library/system.string.format.aspx

    Abraço.


    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    segunda-feira, 30 de setembro de 2013 20:02
  • Eu coloquei do jeito abaixo:

    <asp:TemplateField>
       
    <ItemTemplate>
             <asp:Label ID="lblDocId" runat="server"
    Text='<%# String.Format("{0} {1}", Eval("DIAM2"), Eval("DIAM1")) %>'></asp:Label>         
       
    </ItemTemplate>
    </asp:TemplateField>

    Funcionou porem o titulo do GridView sumiu. Como eu coloco o titulo ?

    Fico no aguardo.

    Obrigado.

    terça-feira, 1 de outubro de 2013 14:06
  • Todo TemplateField contem as mesmas propriedados do BoundField Paulo, com isso você pode utilizar todos os estilos normalmente.

    Nesse caso pode-se utilizar o HeaderText como abaixo.

    <asp:TemplateField HeaderText="Nome da sua Coluna">
        <ItemTemplate>
             <asp:Label ID="lblDocId" runat="server" Text='<%# String.Format("{0} {1}", Eval("DIAM2"), Eval("DIAM1")) %>'></asp:Label>          
        </ItemTemplate>
    </asp:TemplateField>

    Abraço.


    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs


    terça-feira, 1 de outubro de 2013 14:14
  • Como eu acrescento mais um campo no codigo abaixo:

    Quero o campo DIAM1, DIAM2 E CODPECA

    NESSE CASO EU SO MUDO A TEXT DO MEU LABEL, MAS NÃO SEI COMO FICARIA.

    <asp:TemplateField HeaderText="Nome da sua Coluna">
        <ItemTemplate>
             <asp:Label ID="lblDocId" runat="server" Text='<%# String.Format("{0} {1}", Eval("DIAM2"), Eval("DIAM1")) %>'></asp:Label>          
        </ItemTemplate>
    </asp:TemplateField>
    terça-feira, 1 de outubro de 2013 14:50
  •         <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Label ID="lblDocId" runat="server" Text='<%# Eval("DIAM1") %>'></asp:Label>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("DIAM2") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
    terça-feira, 1 de outubro de 2013 14:56
  • <asp:TemplateField HeaderText="Nome da sua Coluna">
        <ItemTemplate>
             <asp:Label ID="lblDocId" runat="server" Text='<%# String.Format("{0} {1} {2}", Eval("DIAM2"), Eval("DIAM1"), Eval("CODPECA")) %>'></asp:Label>          
        </ItemTemplate>
    </asp:TemplateField>

    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    terça-feira, 1 de outubro de 2013 15:00
  • Ja tenho a coluna com meus itens concatenados.

    Da forma que foi colocado abaixo:

    <asp:TemplateField HeaderText="Nome da sua Coluna">
       
    <ItemTemplate>
             <asp:Label ID="lblDocId" runat="server" Text='
    <%# String.Format("{0} {1} {2}", Eval("DIAM2"), Eval("DIAM1"), Eval("CODPECA")) %>'></asp:Label>         
       
    </ItemTemplate>
    </asp:TemplateField>

    Porem os itens que são iguais estão repetindo.

    Tem como colocar no GridView de forma que os itens concatenados que forem repetidos não aparecam ?

    Fico no aguardo.

    Obrigado.

    terça-feira, 1 de outubro de 2013 16:26
  • Paulo isso você deve fazer no seu banco de dados, para ele te trazer apenas registros não repetidos, uma boa forma de se fazer isso é efetuar o controle através do ID sequencial. 

    E no cadastramento de cada item efetuar a validação de igualdade textual do "nome" por exemplo, e impedir que o usuário efetue a inclusão repetida. 

    Abraço.


    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    terça-feira, 1 de outubro de 2013 16:51
  • COMO EU FARIA MEU SELECT NÃO REPETIR A 1 COLUNA ?

    EXEMPLO: "SELECT CODPECA,DIAM1,DIAM2 FROM TABELA1 ORDER BY CODPECA"

    NESSE CASO O CODPECA SO VAI APARECER QUANDO FOR DIFERENTE.

    COMO DEVO PROCEDER JA QUE NÃO TEM JEITO PELO GRIDVIEW.

    FICO NO AGUARDO.

    OBRIGADO.

    terça-feira, 1 de outubro de 2013 18:01
  • Cara, o que você pode fazer, é percorrer todo seu retorno do banco validando item a item se existe igualdade, caso não ai sim você adiciona esse item na sua grid. 

    No caso da repetição no banco de dados, o problema está no cadastramento de itens repetidos. 

    Por exemplo: ID=1 NOME="Fernando", ID=2 NOME="Paulo" assim é o correto, seu cadastramento não pode estar assim Paulo. ID=1 NOME="Paulo", ID=2 NOME="Paulo"... e assim por diante. 

    Caso no seu cadastramento você bloquei a inserção de itens repetidos o problemas de igualdade não mais irá ocorrer e sua aplicação será mais performática. 

    Se um problema foi resolvido marque. 

     Abraço.


    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    quarta-feira, 2 de outubro de 2013 11:56
  • BOM DIA

    OS DADOS DA MINHA TABELA NO MEU SQL SÃO REPETIDOS E DEVEM SER MESMO.

    MAS NO MEU GRIDVIEW NÃO QUERO QUE A 1 COLUNA AONDE TEM ESSES DADOS REPETIDOS SO APARECAM QUANDO MUDAR

    VOU DAR UM EXEMPLO:

    COLUNA1 - COLUNA2 - COLUNA2

    A                  1               11

    A                  2               22

    A                  3               33

    B                  1               11

    B                  2               22

    B                  3               33

    AGORA VOU DAR UM EXEMPLO DE COMO EU QUERO QUE FIQUE, PODE SER PELA QUERY OU PELO GRIDVIEW MESMO.

    COLUNA1 - COLUNA2 - COLUNA2

    A                  1               11

                        2               22

                        3               33

    B                  1               11

                        2               22

                        3               33

    ESPERAM QUE TENHAM ENTENDIDO.

    SE ALGUEM SOUBER COMO ME AJUDAR EU AGRADEÇO MUITO.

    FICO NO AGUARDO.

    OBRIGADO.

        
    quinta-feira, 3 de outubro de 2013 14:02