none
Preencher gridview RRS feed

  • Pergunta

  • Bom dia a todos, tenho um select , gostaria de saber como preencher um gridview usando SqlDataReader.

    Segue um exemplo simples.

    Obrigado.

    Using (SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=True"))

    {
        SqlCommand command = new SqlCommand(
            "SELECT CategoryID, CategoryName FROM dbo.Categories;" +
            "SELECT EmployeeID, LastName FROM dbo.Employees",
            connection);
        connection.Open();
    
        SqlDataReader reader = command.ExecuteReader();
    
        while (reader.HasRows)
        {
            Console.WriteLine("\t{0}\t{1}", reader.GetName(0),
                reader.GetName(1));
    
            while (reader.Read())
            {
                Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0),
                    reader.GetString(1));
            }
            reader.NextResult();
        }
    
        Console.Read();
    }

    quinta-feira, 9 de fevereiro de 2012 12:31

Respostas

  • faz assim:

    SeuDataGrid.DataSource = reader;

    SeuDataGrid.Bind(); //só coloque essa linha se for web
    • Sugerido como Resposta Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 12:48
    • Editado Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 12:52
    • Marcado como Resposta _Manigold_ quinta-feira, 9 de fevereiro de 2012 16:45
    quinta-feira, 9 de fevereiro de 2012 12:48
  • vc pode alinhar cada coluna como quiser...

    dgvAdicoes["VLR_LANCAMENTO",i].Style.Alignment = DataGridViewContentAlignment.BottomCenter;
    
    dgvAdicoes["DETALHES",i].Style.Alignment = DataGridViewContentAlignment.BottomLeft;
    
    dgvAdicoes["PARCELAS",i].Style.Alignment = DataGridViewContentAlignment.BottomRight;


    Marque como resposta se atendeu sua necessidade ;)



    • Marcado como Resposta _Manigold_ quinta-feira, 9 de fevereiro de 2012 16:45
    • Editado Renato Coqueiro segunda-feira, 20 de fevereiro de 2012 14:43
    quinta-feira, 9 de fevereiro de 2012 13:51
  • O "i" serve é o index da linha que voce quer ordenar. Como voce quer ordenar todas as linhas da coluna tem que percorrer cada linha. O"i" faz parte do comando for que percorre todas as linhas. veja:

    for (int i = 0; i < gdResultado11.RowCount; i++)
     {
              gdResultado11["VLR_LANCAMENTO", i].Style.Alignment = DataGridViewContentAlignment.BottomRight;
              gdResultado11["DETALHES", i].Style.Alignment = DataGridViewContentAlignment.BottomLeft;
              gdResultado11["PARCELAS", i].Style.Alignment = DataGridViewContentAlignment.BottomLeft;
     }



    • Marcado como Resposta _Manigold_ quinta-feira, 9 de fevereiro de 2012 16:45
    • Editado Renato Coqueiro segunda-feira, 20 de fevereiro de 2012 14:43
    quinta-feira, 9 de fevereiro de 2012 14:06
  • Tenta isso...

    gdResultado11.Columns[i].HeaderStyle.HorizontalAlign = HorizontalAlign.Center;

    • Marcado como Resposta _Manigold_ quinta-feira, 9 de fevereiro de 2012 19:04
    quinta-feira, 9 de fevereiro de 2012 16:48

Todas as Respostas

  • faz assim:

    SeuDataGrid.DataSource = reader;

    SeuDataGrid.Bind(); //só coloque essa linha se for web
    • Sugerido como Resposta Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 12:48
    • Editado Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 12:52
    • Marcado como Resposta _Manigold_ quinta-feira, 9 de fevereiro de 2012 16:45
    quinta-feira, 9 de fevereiro de 2012 12:48
  • ola amigo tive que fazer dessa forma, mas o problema agora é alinha os resultados.

     SqlCommand cmd = new SqlCommand("Sp_OP_Remissao_Extrato", Conexao);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@exec", "SEL");
                cmd.Parameters.AddWithValue("@procedimento", 7);
                cmd.Parameters.AddWithValue("@Cd_Operador_Login", Session["cd_login"].ToString());
                cmd.Parameters.AddWithValue("@Cd_Empresa", Session["cd_empresa"].ToString());
                cmd.Parameters.AddWithValue("@Cd_Matricula", Session["cd_matricula"].ToString());
                cmd.Parameters.AddWithValue("@Nr_Semana_Credito", 17);
                cmd.Parameters.AddWithValue("@Nr_Ano_Credito", 2011);
                //cmd.Parameters.AddWithValue("@Codigo_grupo", Convert.ToInt16(Session["Codigo_grupo"]));
                //cmd.Parameters.AddWithValue("@migracao ", 1);


                SqlDataReader obj_Reader = cmd.ExecuteReader();


                DataTable dt = new DataTable();
                dt.Columns.Add("LANÇAMENTOS");
                dt.Columns.Add("DETALHES");
                dt.Columns.Add("PARCELAS");
                dt.Columns.Add("VALOR");




                while (obj_Reader.Read())
                {


                }


                obj_Reader.NextResult();
                while (obj_Reader.Read())
                {
                    DataRow row = dt.NewRow();
                    row["LANÇAMENTOS"] = obj_Reader["DS_LANCAMENTO"];
                    row["DETALHES"] = obj_Reader["DS_ORIGEM"];
                    row["PARCELAS"] = obj_Reader["NR_PARCELA_ATUAL"];
                    row["VALOR"] = obj_Reader["VL_LANCAMENTO"];
                    dt.Rows.Add(row);
                }


                gdResultado11.DataSource = dt;
                gdResultado11.DataBind();

    e o resultado esta saindo torto exsite uma forma de alinhar os mesmo? 

    quinta-feira, 9 de fevereiro de 2012 13:30
  • DEPOIS QUEM PREENCHER O GRID VC ALINHA AS INFORMAÇÕES... SÓ ALINHEI AS VE VALOR, DAI VC ALINHA TODAS

    for (int i = 0; i < dgvAdicoes.RowCount; i++)
     {
            gdResultado11["VLR_LANCAMENTO", i].Style.Alignment = DataGridViewContentAlignment.BottomRight;
     }

    quinta-feira, 9 de fevereiro de 2012 13:43
  • E SE FOR UM ALINHAMENTO INDIVIDUAL ?

    quinta-feira, 9 de fevereiro de 2012 13:44
  • vc pode alinhar cada coluna como quiser...

    dgvAdicoes["VLR_LANCAMENTO",i].Style.Alignment = DataGridViewContentAlignment.BottomCenter;
    
    dgvAdicoes["DETALHES",i].Style.Alignment = DataGridViewContentAlignment.BottomLeft;
    
    dgvAdicoes["PARCELAS",i].Style.Alignment = DataGridViewContentAlignment.BottomRight;


    Marque como resposta se atendeu sua necessidade ;)



    • Marcado como Resposta _Manigold_ quinta-feira, 9 de fevereiro de 2012 16:45
    • Editado Renato Coqueiro segunda-feira, 20 de fevereiro de 2012 14:43
    quinta-feira, 9 de fevereiro de 2012 13:51
  • ola amigo estamos quase la, agora uma coisa simples, o que vai no lugar do i ?

    Obrigado mesmo.

    quinta-feira, 9 de fevereiro de 2012 13:53
  • O "i" serve é o index da linha que voce quer ordenar. Como voce quer ordenar todas as linhas da coluna tem que percorrer cada linha. O"i" faz parte do comando for que percorre todas as linhas. veja:

    for (int i = 0; i < gdResultado11.RowCount; i++)
     {
              gdResultado11["VLR_LANCAMENTO", i].Style.Alignment = DataGridViewContentAlignment.BottomRight;
              gdResultado11["DETALHES", i].Style.Alignment = DataGridViewContentAlignment.BottomLeft;
              gdResultado11["PARCELAS", i].Style.Alignment = DataGridViewContentAlignment.BottomLeft;
     }



    • Marcado como Resposta _Manigold_ quinta-feira, 9 de fevereiro de 2012 16:45
    • Editado Renato Coqueiro segunda-feira, 20 de fevereiro de 2012 14:43
    quinta-feira, 9 de fevereiro de 2012 14:06
  •     AAAA, VC TA USANDO APLICAÇÃO WEB, PENSEI QUE ERA WINDOWSFORM.
        FAÇA ASSIM ENTÃO. ESQUECE O COMANDO FOR E FAÇA ASSIM:

        gdResultado11.Columns[INDEX_DA_COLUNA_QUE_QUER_ALINHAR].ItemStyle.HorizontalAlign = HorizontalAlign.Right;

    A DESCRIÇÃO INDEX_DA_COLUNA_QUE_QUER_ALINHAR QUER DIZER QUE NESSE LUGAR VC DEVE COLOCAR QUAL A POSIÇÃO DA OLUNA QUE QUER ALINHAR. Ex: se for a primeira coluna vc coloca 0, se for a segunda vc coloca 1....etc.

    É que estou sem visual studio nessa maquina pra testar pra vc...

       
    • Editado Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 14:27
    • Sugerido como Resposta Renato Coqueiro quinta-feira, 9 de fevereiro de 2012 14:44
    • Não Sugerido como Resposta _Manigold_ quinta-feira, 9 de fevereiro de 2012 16:45
    quinta-feira, 9 de fevereiro de 2012 14:24
  • Ola amigo fiz assim e funcionou: 

    Agora preciso ajudar o header, tem alguma ideia?

    Obrigadao.

        for (int i = 0; i < gdResultado11.Rows.Count; i++)
                {




                    gdResultado11.HeaderStyle.HorizontalAlign =  HorizontalAlign.Right;
                    gdResultado11.Rows[i].Cells[3].HorizontalAlign = HorizontalAlign.Right;


                }

    quinta-feira, 9 de fevereiro de 2012 15:55
  • Tenta isso...

    gdResultado11.Columns[i].HeaderStyle.HorizontalAlign = HorizontalAlign.Center;

    • Marcado como Resposta _Manigold_ quinta-feira, 9 de fevereiro de 2012 19:04
    quinta-feira, 9 de fevereiro de 2012 16:48
  • <asp:gridview autogeneratecolumns="False" id="GridViewAlinha" runat="server" width="422px">
            <columns>
                <asp:boundfield datafield="Nome" headertext="Nome">
                <headerstyle horizontalalign="Center" verticalalign="Top"></headerstyle>
                </asp:boundfield>
                <asp:boundfield datafield="SobreNome" headertext="Sobre Nome">
                <headerstyle horizontalalign="Right" verticalalign="Bottom"></headerstyle>
                </asp:boundfield>
                <asp:boundfield datafield="Data" headertext="Data">
                <headerstyle horizontalalign="Left" verticalalign="Top"></headerstyle>
                </asp:boundfield>
            </columns>
        </asp:gridview>

    Vc pode fazer direto no aspx, tambem.
    • Editado Romy Moura quinta-feira, 9 de fevereiro de 2012 16:56
    quinta-feira, 9 de fevereiro de 2012 16:55