Quando estamos usando o footer da gridview como meio para inserir novos registros na gridview ficamos com um problema quando a lista está vazia, pois desse jeito a gridview não é exibida e logo não tem como fazer a inserção. Estou mostrando uma pequena solução para resolver esse problema, não é das mais bonitas, mas é bem simples e pelo o que andei pesquisando essa solução e a outra de extender a classe gridview são as mais usadas, sendo que a segunda requer um pouco mais de trabalho.

// A lista está vazia
            if (vetProduto.Count == 0)
            {
// Instancio uma nova lista do mesmo tipo do objeto presente na gridview 
                List<Produto> ls = new List<Produto>();
// Instancio e adiciono na lista um produto
                ls.Add(new Produto());
// Faço o bindign
                grid.DataSource = ls;
                grid.DataBind();                
// Obter o número de celulas da gridview
                int columnSpan = grid.Rows[0].Cells.Count;
// Apaga todo o conteudo da primeira linha
                grid.Rows[0].Cells.Clear();
// Adiciona uma nova celula
                grid.Rows[0].Cells.Add(new TableCell());
// Faz o conteudo da celula ficar centralizado
                grid.Rows[0].Attributes.CssStyle.Add("text-align", "center");
// Adiciona uma frase informativa
                grid.Rows[0].Cells[0].Text = "Não existe nenhum produto cadastrado.";
// Coloca a celula para ocupar todo o espaço da tabela
                grid.Rows[0].Cells[0].ColumnSpan = columnSpan;                
            }
            else
            {
// A lista nao estava vazia, logo trata normalmente
                grid.DataSource = vetProduto;
                grid.DataBind();
            }

Anúncios