Fórum GridView com Cache #9365
16/09/2009
0
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
Curtir tópico
+ 0Posts
16/09/2009
Luiz Maia
Gostei + 0
16/09/2009
Valter Ferreira
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.
Gostei + 0
17/09/2009
Devmedia
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>
Gostei + 0
17/09/2009
Fabio Mans
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
Gostei + 0
24/09/2009
Devmedia
a reposta do consultor foi suficiente? Podemos encerrar o chamado?
Gostei + 0
30/09/2009
Devmedia
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á.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)