GridView com Cache
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!
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
Curtidas 0
Respostas
Luiz Maia
16/09/2009
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
GOSTEI 0
Valter Ferreira
16/09/2009
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.
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
Devmedia
16/09/2009
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>
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
Fabio Mans
16/09/2009
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
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
Devmedia
16/09/2009
Valter,
a reposta do consultor foi suficiente? Podemos encerrar o chamado?
a reposta do consultor foi suficiente? Podemos encerrar o chamado?
GOSTEI 0
Devmedia
16/09/2009
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á.
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