none
DataGridView - Multiplas linha na mesma celula RRS feed

  • Pergunta

  • Preciso alimentar a celula de um gridview com o conteudo abaixo do jeito que está:

    Empresa
    Telefone Cep

    no entanto ele não permite multiplas linha na mesma celula, há como fazer isto?

     

    obrigado,

     

    quarta-feira, 13 de julho de 2011 16:31

Respostas

  • Edilson,

    Você pode usar o evento CellFormating para definir o WrapMode da sua célula para True.

    No caso, para que as linhas sejam redimensionadas corretamente, você também deverá setar o AutoSizeRowsMode para AllCells.

    Seria tipo:

       grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
       grid.CellFormatting += new DataGridViewCellFormattingEventHandler(OnGridCellFormatting);
    
      private void OnGridCellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
      {
       // verifica a coluna e seta o WrapMode...
       if (e.ColumnIndex == 0)
        e.CellStyle.WrapMode = DataGridViewTriState.True;
      }
    
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    • Marcado como Resposta Edilson quarta-feira, 13 de julho de 2011 16:46
    quarta-feira, 13 de julho de 2011 16:39
    Moderador
  • Rogério,

     

    perfeito, muito obrigado.

     

    eu fiz assim no meu:

     for (int linha = 1; linha <= oDoc.Tables[1].Rows.Count; linha++)
          {
    
            for (int coluna = 1; coluna <= oDoc.Tables[1].Columns.Count; coluna++)
            {
              if (String.IsNullOrEmpty(oDoc.Tables[1].Cell(linha, coluna).Range.Text.Replace("\r", string.Empty).Replace("\a", string.Empty)) == false)
              {
                grdEtiqueta.Rows[linha - 1].Cells[colunaReal].Style.WrapMode = DataGridViewTriState.True;
                grdEtiqueta.Rows[linha - 1].Cells[colunaReal].Value = oDoc.Tables[1].Cell(linha + 1, coluna).Range.Text;
                colunaReal+=1;
              }
    
            }
            colunaReal = 0;
          }
    


    att 

    • Marcado como Resposta Edilson quarta-feira, 13 de julho de 2011 16:52
    quarta-feira, 13 de julho de 2011 16:47

Todas as Respostas

  • Edilson,

    Você pode usar o evento CellFormating para definir o WrapMode da sua célula para True.

    No caso, para que as linhas sejam redimensionadas corretamente, você também deverá setar o AutoSizeRowsMode para AllCells.

    Seria tipo:

       grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
       grid.CellFormatting += new DataGridViewCellFormattingEventHandler(OnGridCellFormatting);
    
      private void OnGridCellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
      {
       // verifica a coluna e seta o WrapMode...
       if (e.ColumnIndex == 0)
        e.CellStyle.WrapMode = DataGridViewTriState.True;
      }
    
    

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    • Marcado como Resposta Edilson quarta-feira, 13 de julho de 2011 16:46
    quarta-feira, 13 de julho de 2011 16:39
    Moderador
  • Rogério,

     

    perfeito, muito obrigado.

     

    eu fiz assim no meu:

     for (int linha = 1; linha <= oDoc.Tables[1].Rows.Count; linha++)
          {
    
            for (int coluna = 1; coluna <= oDoc.Tables[1].Columns.Count; coluna++)
            {
              if (String.IsNullOrEmpty(oDoc.Tables[1].Cell(linha, coluna).Range.Text.Replace("\r", string.Empty).Replace("\a", string.Empty)) == false)
              {
                grdEtiqueta.Rows[linha - 1].Cells[colunaReal].Style.WrapMode = DataGridViewTriState.True;
                grdEtiqueta.Rows[linha - 1].Cells[colunaReal].Value = oDoc.Tables[1].Cell(linha + 1, coluna).Range.Text;
                colunaReal+=1;
              }
    
            }
            colunaReal = 0;
          }
    


    att 

    • Marcado como Resposta Edilson quarta-feira, 13 de julho de 2011 16:52
    quarta-feira, 13 de julho de 2011 16:47