1° Deixar o grid já montado com o visual desejado, independente se tenha dados ou não, demoninado como “MontarGrid”.

Está função deve ser chamada no PageLoad.

protected void Monta_Grid()

    {

        DataTable tbDados; // CRIO UM DataTable para criação de uma nova tabela

        DataColumn Coluna; // CRIO UM DataColum para armarzenar os nomes das colunas, o tipo da coluna

        Session["contador"] = 0;

 

        tbDados = new DataTable ();

        //ADINCIONAR 1º LINHA

        Coluna = new DataColumn();//Crio uma nova coluna

        Coluna.DataType = System.Type.GetType("System.Int32"); //Tipo de dados da nova coluna

        Coluna.ColumnName = "PROFISSIONAL";//Nome da coluna

        tbDados.Columns.Add(Coluna);

 

        //ADINCIONAR 2º LINHA

        Coluna = new DataColumn();

        Coluna.DataType = System.Type.GetType("System.Int32");

        Coluna.ColumnName = "QTD";

        tbDados.Columns.Add(Coluna);

 

        //ADINCIONAR 3º LINHA

        Coluna = new DataColumn();

        Coluna.DataType = System.Type.GetType("System.String");

        Coluna.ColumnName = "VALOR";

        tbDados.Columns.Add(Coluna);

 

 

        //ADINCIONAR 4º LINHA

        Coluna = new DataColumn();

        Coluna.DataType = System.Type.GetType("System.String");

        Coluna.ColumnName = "VISUALIZAR";

        tbDados.Columns.Add(Coluna);

 

        //ADINCIONAR 5º LINHA

        Coluna = new DataColumn();

        Coluna.DataType = System.Type.GetType("System.String");

        Coluna.ColumnName = "Valor Unt";

        tbDados.Columns.Add(Coluna);

 

       

        //ESTE PONTO CRIA A CHAVE PRIMÁRIA DO DATAGRID, pois a criação precisa ter uma chave primária para montagem do datagrid e somente para ressaltar que uma coluna que os dados não se repitam.

        DataColumn[] DCol = new DataColumn[1];

        DCol[0] = tbDados.Columns["PROFISSIONAL"];

        tbDados.PrimaryKey = DCol;

 

 

        Session["TabelaDados"] = tbDados; //JOGOS OS DADOS NO SESSION

 

 

        DDL_Producao.DataSource = tbDados; //INSERE OS DADOS NO DATASOURCE

        DDL_Producao.DataBind(); //JOGA OS DADOS NO DATALIST

 

 

 

    }

 

 

 

 

 

 

2° FUNÇÃO BindGrid

Está montará todo o comando que trará os dados do banco e montará o grid como estes dados.

Uso um código de um sistema de atendimento a cliente que neste caso mostra a produção de todos os vendedores.

 

private void BindGrid()

    {

        DataSet ds = new DataSet();

        string connectionString = ConfigurationManager.ConnectionStrings["ASPNETDBConnectionString"].ConnectionString;

        using (SqlConnection cnn = new SqlConnection(connectionString))

        {         

          

            DateTime data1 = Convert.ToDateTime(txtdata1.Text);

            string dt1 = data1.Year + "-" + data1.Month + "-" + data1.Day;

 

            DateTime data2 = Convert.ToDateTime(txtdata2.Text);

 

            string dt2 = data2.Year + "-" + data2.Month + "-" + data2.Day;

 

            strSQL = "SELECT NOME,A.CODFUNC,COUNT(A.CODFUNC)QTD,SUM(VALORUNT)VALOR " +

                            "FROM ATD_DETAILS A  " +

                            " LEFT JOIN FUNCIONARIOS B " +

                            "     ON A.CODFUNC=B.CODFUNC " +

                            " LEFT JOIN ATENDIMENTO C " +

                            "     ON A.CODATD=C.CODATD " +

                            "WHERE A.CODFUNC IS NOT NULL " +

                            "AND NOME IS NOT NULL " ;

                 strSQL = strSQL + "AND DATA BETWEEN " + "'" + dt1 + "'" + " AND " + "'" + dt2 + "'" +

                     "GROUP BY A.CODFUNC,NOME " +

                     "ORDER BY NOME ";

 

            cnn.Open();

 

            SqlDataAdapter da = new SqlDataAdapter(strSQL, cnn);

 

            ds.Tables.Add("ATENDIMENTO");

            da.Fill(ds.Tables["ATENDIMENTO"]);

 

            DDL_Producao.DataSource = ds.Tables["ATENDIMENTO"];

            DDL_Producao.DataBind();

        }

 

    }

 

Abaixo segue imagem de como ficaria o designer do código.
 
 
 

At.

Flávio Renato

 

PS: Deixe seu comentário no artigo para que possamos melhorar nossos posts.

 

 
 
 
 
 

At.

Flávio Renato

 

PS: Deixe seu comentário no artigo para que possamos melhorar nossos posts.