Fórum GridView com Cache #9365

16/09/2009

0

Olá!

Estou fazendo um GridView utilizando Cache. No Source da página eu criei o GridView com ID="gvSearch".
Tenho os seguintes códigos:


protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if (Cache["pesquisa"] == null)
        {
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(new SqlCommand("SELECT * FROM TABELA;", new SqlConnection(Resources.ConnectionString)));
            da.Fill(ds);                       
                        Cache.Insert("pesquisa", ds, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero);
                        gvSearch.DataSource = ds;
        }
        else
                        gvSearch.DataSource = (DataSet)Cache["pesquisa"];
    }
}

protected void gvSearch_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
    gvSearch.DataSource = (DataSet)Cache["pesquisa"]);
    gvSearch.PageIndex = e.NewSelectedIndex;
    gvSearch.DataBind();
}



O problema é que sempre que troca a página, ele dá a mensagem de erro:
GridView 'gvSearch' acionou o evento PageIndexChanging, que não foi tratado.

O que pode estar errado? Qual a melhor forma de fazer isso?


Obrigado!
Valter Ferreira

Valter Ferreira

Responder

Posts

16/09/2009

Luiz Maia

Ola Valter,   Você deve informar um Metodo para fazer a paginação:     protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.DataSource = SeuDataSource; GridView1.PageIndex = e.NewPageIndex; GridView1.DataBind(); }     Isso se deve ao fato de o Bind ser feito via código gerenciado, se utilizar um ObjectDataSource esse método não precisar ser feito.   Espero ter ajudado. Aguardo retorno. Abraços Att Luiz Maia
Responder

Gostei + 0

16/09/2009

Valter Ferreira

Isto foi uma resposta, ou simplesmente não leu minha pergunta?
Não é a primeira vez que respondem-me com a minha mesma pergunta.
Gostaria de mais atenção.

Esta havendo alguma falha de comunicação entre nós ou falta de capacidade técnica por parte de V.sa  em dar consultoria nas dúvidas apresentadas, pois é a segunda vez que acontece isso, vocês simplesmente contorna, contorna.... e não responde o que estou lhe perguntando.

Leia novamente minha pergunta: necessito que seja feito de forma a utilizar "Cache", e no final há quase o mesmo código que você indicou-me a usar, ou seja, não funciona.


Fico no aguardo de uma resposta plaúsivel afim de valer tal mensalidade por esse serviço.


Atenciosamente,
Valter.
Responder

Gostei + 0

17/09/2009

Devmedia

Valter,
o Suporte DevMedia (tira-Dúvidas) tem os melhores consultores que sempre estão dispostos a resolver os problemas dos nossos clientes, sempre com total atenção.
No seu caso, o Luiz é um conceituado consultor e tentou lhe passar a resposta mais direta possível.
Geralmente, quando o problema é apresentado, fica dificil para o consultor entender perfeitamente o que o cliente deseja, mas nestes casos, o cliente precisa expor em que partes ainda tem dúvida para que o consultor possa responder com foco na determinada dúvida.
O Suporte DevMedia (Tira-Duvidas) tira dúvidas sobre as tecnologias que fazem parte do seu escopo, não desenvolve nenhuma linha.
Porém, o consultor Luiz lhe mandou especialmente o código completo para o seu problema.
Lembrete: os metodos gvSearch_SelectedIndexChanging e gvSearch_PageIndexChanging são métodos diferentes.
Segue abaixo o código fontecompleto:
 
public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

if (Cache["pesquisa"] == null)

{

DataSet ds = new DataSet();

SqlDataAdapter da = new SqlDataAdapter(new SqlCommand("SELECT * FROM ern_carga_descarga;", new SqlConnection(@"Data Source=EADTEC1438\SQLEXPRESS;Initial Catalog=CargaDescarga;Integrated Security=True")));

da.Fill(ds);

Cache.Insert("pesquisa", ds, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero);

gvSearch.DataSource = ds;

}

else

gvSearch.DataSource = (DataSet)Cache["pesquisa"];

gvSearch.DataBind();

}

}

protected void gvSearch_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)

{

gvSearch.DataSource = (DataSet)Cache["pesquisa"];

gvSearch.PageIndex = e.NewSelectedIndex;

gvSearch.DataBind();

}

protected void gvSearch_PageIndexChanging(object sender, GridViewPageEventArgs e)

{

gvSearch.DataSource = (DataSet)Cache["pesquisa"];

gvSearch.PageIndex = e.NewPageIndex;

gvSearch.DataBind();

}

}
 
E o HTML:
 

<asp:GridView ID="gvSearch" runat="server" Visible="true"

onselectedindexchanging="gvSearch_SelectedIndexChanging" AllowPaging="True"

onpageindexchanging="gvSearch_PageIndexChanging">

</asp:GridView>
Responder

Gostei + 0

17/09/2009

Fabio Mans

Olá Valter, agora eu sou o responsável por este chamado.

Quando você fala trocar de página, você diz paginar?

Faz o seguinte, crie o evento abaixo


protected void gvSearch_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
       
        gvSearch.PageIndex = e.NewPageIndex;
        gvSearch.DataSource = (DataSet)Cache["pesquisa"];
     

    }



O SelectedIndexChanging   ocorre quando o botão de Select é clicado, mas antes de executar a operação, ou seja você implementou outro evento.


Abaixo um resumo de todos os eventos do Grid.

PageIndexChanged        Ocorre quando algum dos botões de paginação for clicado, mas depois da operação ter sido executada.
PageIndexChanging     Ocorre quando algum dos botões de paginação for clicado, mas antes da operação ser executada.
RowCancelingEdit     Ocorre quando o botão de cancelamento da edição é clicado, mas é executado antes da linha sair do modo de edição.
RowCommand     Ocorre sempre quando algum controle do tipo Button for clicado.
RowCreated     Ocorre sempre quando uma linha é criada.
RowDataBound     Ocorre sempre quando uma linha está sendo populada pelos dados.
RowDeleted     Ocorre quando o botão de Delete é clicado, mas depois da linha ser excluída.
RowDeleting     Ocorre quando o botão de Delete é clicado, mas antes da linha ser excluída.
RowEditing     Ocorre quando o botão de Edit é clicado, mas antes da linha entrar em modo de edição.
RowUpdated     Ocorre quando o botão de Update é clicado, mas depois da linha ser atualizada.
RowUpdating     Ocorre quando o botão de Update é clicado, mas antes da linha ser atualizada.
SelectedIndexChanged     Ocorre quando o botão de Select é clicado, mas depois da operação ter sido executada.
SelectedIndexChanging     Ocorre quando o botão de Select é clicado, mas antes de executar a operação.
Sorted     Ocorre quando o link de ordenação é clicado, mas depois da operação ter sido executada.
Sorting     Ocorre quando o link de ordenação é clicado, mas antes de executar a operação.


Espero ter ajudado

Fabio


Responder

Gostei + 0

24/09/2009

Devmedia

Valter,
a reposta do consultor foi suficiente? Podemos encerrar o chamado?
Responder

Gostei + 0

30/09/2009

Devmedia

Valter,
por falta de retorno estamos encerrando o seu chamado. Caso ainda tenha duvidas sobre o assunto aqui tratado, por favor, volte a postar aqui mesmo que o consultor lhe atenderá.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar