Bastos Posted April 5, 2006 at 11:35 AM Report #21000 Posted April 5, 2006 at 11:35 AM 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!! 😛
Bastos Posted April 10, 2006 at 03:07 PM Author Report #21573 Posted April 10, 2006 at 03:07 PM 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?!?!?!? 😁 fikem...
deathseeker25 Posted April 10, 2006 at 05:47 PM Report #21581 Posted April 10, 2006 at 05:47 PM 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?!?!?!? 😁 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. 😉
Bastos Posted April 10, 2006 at 06:04 PM Author Report #21585 Posted April 10, 2006 at 06:04 PM 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 😁 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...
max Posted April 13, 2006 at 07:26 PM Report #22047 Posted April 13, 2006 at 07:26 PM 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
Bastos Posted April 17, 2006 at 02:07 PM Author Report #22528 Posted April 17, 2006 at 02:07 PM 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...
senito Posted April 17, 2006 at 03:31 PM Report #22535 Posted April 17, 2006 at 03:31 PM 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
Bastos Posted April 18, 2006 at 10:13 AM Author Report #22623 Posted April 18, 2006 at 10:13 AM 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... 😞
max Posted April 19, 2006 at 05:57 PM Report #22910 Posted April 19, 2006 at 05:57 PM é 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
max Posted April 19, 2006 at 06:07 PM Report #22921 Posted April 19, 2006 at 06:07 PM 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!
Bastos Posted April 24, 2006 at 02:14 PM Author Report #23966 Posted April 24, 2006 at 02:14 PM 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 😄 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 😄
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now