• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Bastos

[C# asp.net] Criar paginaçao numa datagrid lendo um xml

11 mensagens neste tópico

Boas!!

Estou a utilizar VS2003.NET, C# asp

o q se passa é o seguinte:

carrego um file XML para uma datagrid, e keria implementar a paginação, mas n está a funcionar, n muda de página :s

já fui ao property building da datagrid activar a paginaçao e inseri este codigo:

private void dtgrdPost_PageIndexChanged(object source, system.Web.UI.WebControls.DataGridPageChangedEventArgs e)
	{
		dtgrdPost.CurrentPageIndex = e.NewPageIndex;
		dtgrdPost.Visible = true;
		func_bd(); 'funcao q carrega o xml pra um dataset
                                                                //dtgrdPost.DataBind();
	}

já pesquisei mas encontrei sempre a mesma resposta, que era a q estou a utilizar, se alguem puder ajudar agredecia!!

edit: alterado nome do topico!

P.S.: Todas as sugestoes sao bem-vindas!! :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

entao onde estao os experts?? ng dá um tiro no escuro??

ninguém tem uma opinião??? please help!!

todas as opinioes sao bem-vindas!!

ou será q só alguns posts eke são respondidos?!?!?!? :cheesygrin:

fikem...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

entao onde estao os experts?? ng dá um tiro no escuro??

ninguém tem uma opinião??? please help!!

todas as opinioes sao bem-vindas!!

ou será q só alguns posts eke são respondidos?!?!?!? :cheesygrin:

fikem...

Boas,

Em primeiro lugar, bem-vindo ao forum. Em segundo lugar, devo dizer que aqui tratamos todos por igual dependendo do conhecimento que temos. Se ainda ninguem respondeu á questão é porque realmente ninguem que a tenha lido tem capacidade para a resolver.

O melhor será esperar mais um pouco, que tenho a certeza que obterás uma boa resposta nos próximos dias. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom, já stou mais descansado, por momentos ate pensei q a minha msg estivesse de alguma forma invisivel, visto q n obtinha nenhum feedback da vossa parte. mto agradecido, pelo menos sei q alguem leu as msg :cheesygrin:

desculpem o stress, mas é deseperante kando n se obtem resposta... nenhum tipo d resposta entao :s

fikem bem... e mais uma vez obrigado deathseeker25 pelo feedback...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

quer-me parecer que tens de fazer as coisas manualmente...

Ou seja, não te basta escreveres "func_bd()" sempre que se muda a pagina no datagrid.

Não escreveste aqui a tua função "func_bd()" e talvez fosse util.

Nessa função tens de filtrar os resultados para a página certa, e só depois fazes o databind. Senão ele está-te sempre a mostrar a primeira página...

Deves ter de usar algo tipo:

  private void DataGrid1_PageIndexChanged(object source,    System.Web.UI.WebControls.DataGridPageChangedEventArgs e)

   {

     // user clicks forward or back, just call BindGrid with the NewPageIndex:

     func_bd(this.curPageSize , e.NewPageIndex);

   }

}

}

Dá uma espreitadela em http://www.eggheadcafe.com/articles/20060109.asp

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

pois o problema eke em todas as paginas tem SQL, e em sql eu sei q dá, tal como tenho em cima, nem é necessário colocar e.newpageindex, agora com XML... eke está dificil.

a funçao func_bd() apenas carrega o dataset e a datagrid, mas vou coloca-la...

private void func_bd()
{
//carrega o DS pra DataGrid
		DataSet dsFinal = new DataSet();
		dsFinal.ReadXmlSchema(Request.PhysicalApplicationPath + "bd/XML.xsd");
		dsFinal.ReadXml(Request.PhysicalApplicationPath + "bd/temp/XMLTemp" + Session.SessionID + ".xml");
		XmlDataDocument xmlData = new XmlDataDocument(dsFinal);
		dtgrdPost.DataSource = dsFinal;
		dtgrdPost.DataBind();
}

como ves, é o mais basico, tb já tentei colocar o codigo directamente no evento load(), mas sem sucesso.

mas de kalker maneira vou fazer mais uns testes com o codigo em cima :(

obrigado max

vou postando pra vos manter informados...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, eu neste momento não te consigo dizer como se faz isso, pq tou no trabalho e n me dá mto jeito tar a escrever sobre isso.

Mal possa tento ajudar-te.

Mas se quiseres fazer isso mais rápido muda pro VS 2005. Já faz isso automaticamente (pelo q me lembro).

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, eu neste momento não te consigo dizer como se faz isso, pq tou no trabalho e n me dá mto jeito tar a escrever sobre isso.

Mal possa tento ajudar-te.

Mas se quiseres fazer isso mais rápido muda pro VS 2005. Já faz isso automaticamente (pelo q me lembro).

Cumps

pois o vs2003, tb tem a msma opção e funciona, mas em sql :s

pq com xml n consigo por isto a funcionar... :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é isso que eu acho estranho ser diferente do sql, para o xml...

porque ambos alojam dados! e a metodologia é sempre a mesma.

Faz-se um novo dataset... faz-se a leitura da base de dados ou do xml, depois faz-se fill ao dataset, e por ultimo faz-se o bind do datagrid.

Não percebo mm o que possa ser diferente entre as um dataset oriundo de sql e de um xml

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas espera, lá está... alguma coisa tem de estar mal.

Da maneira que estás a fazer isso, quando algo muda a página, ele recebe a ordem para "dtgrdPost.CurrentPageIndex = e.NewPageIndex;" e depois disso... fazes a função func_db()

Mas como essa função começa logo por fazer um dataset novo... imagina que o teu xml tem 50 items. E a tua datagrid tem a ordem de só mostrar 10 de cada vez.

Ele vai-te sempre publicar os primeiros 10 items... a não ser que lhe dês uma ordem em contrário!

algo do tipo:

func_db(3)

então se é a página 3, ele tem de ir buscar ao datagrid quantos items é que mostra por página. Se forem 10, então ele vai ler o xml a partir do item "21" até ao item "30".

E depois com esses 10 items, é que faz um dataset.

Tu tens mm de filtrar a leitura do xml, porque repara.

Imagina que o teu xml tinha 5 mil items. E o datagrid só mostra 10.

Já imaginaste o que seria sempre que mudavas de página, a tua função carregar um novo dataset com 5 mil items ?? lol

De certeza que tb dava, mas fica muito lento e isso n é maneira de programar...

Podes e deves, filtrar primeiro o teu xml, e só depois é que enches o teu dataset!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!!!

consegui finalmente encontrar o problema q n me deixava ver o sol... looool

agradeço a todos, mas nao fazem ideia do q era, algo q pensei q o VS2003 fizesse de forma automatica, e até faz pra algumas coisas... looool, ja estou a divagar :D

pronto vou colocar a soluçao..

pra além do codigo q colokei no 1º post e da respectiva função, é necessário incializar o componente pra mudar de pagina:

private void InitializeComponent()
    {
        this.dtgrdPost.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.dtgrdPost_PageIndexChanged);}

pois é, apenas isto :s

max: tinha pensado da forma como disseste, mas dps lembrei-m q iria carregar mto... mas era a unica solução... :s thank's :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora