skcratch Posted August 17, 2009 at 02:50 PM Report #283604 Posted August 17, 2009 at 02:50 PM Viva! Neste momento, estou a desenvolver uma aplicação que recorre a WebServices para obter informação externa. Depois de fazer o parsing do XML retornado pela invocação do WebService, utilizo as propriedades a seguir apresentadas da classe DataSet para "mapear" o XML numa classe DataTable: DataSet ds1 = new DataSet(); ds1.ReadXml(new StringReader(xmlDoc.OuterXml)); DataTable dt1 = new DataTable(); dt1 = ds1.Tables["Tabela"]; Alguns dos pedidos realizados, podem retornar mais do que um registo (falando em termos de Rows da DataTable) mas apenas pretendo apresentar a informação relativa a um único registo de cada vez. No entanto, o utilizador pode pedir o registo seguinte (caso exista) e é aí que reside a minha dúvida: como posso armazenar a informação obtida no primeiro pedido (retorna todos os registos) para assim não ter que efectuar um novo pedido ao servidor de WebServices? De salientar que não estou a utilizar controlos de DataBinding para apresentar a informação. Grato desde já pela ajuda, Cumps! 🙂
bruno1234 Posted August 17, 2009 at 04:17 PM Report #283627 Posted August 17, 2009 at 04:17 PM podes adicionar linhas a uma datatable, cada vez q recebes um registo adicionas esse registo a uma datatable. Assim no fim tens todos os registos na mm datatable. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
skcratch Posted August 20, 2009 at 01:24 PM Author Report #283925 Posted August 20, 2009 at 01:24 PM Viva! Sim, já tinha pensado numa solução semelhante. No entanto, depois dos dados terem sido enviados para o cliente, segundo sei, o garbage collector liberta todos os recursos reservados dinamicamente. Sendo assim, caso pretende-se obter o próximo registo da DataTable através de um Web Control que gerasse um postback (por exemplo, ASP Button), isso não seria possível, já que os dados não estariam em memória. Estou enganado? Cumps! 🙂
bruno1234 Posted August 20, 2009 at 02:09 PM Report #283931 Posted August 20, 2009 at 02:09 PM Queres guardar a DataTable e mostrar no cliente um registo de cada vez, e só mostrar o proximo se for feito um postback, é isso? Se for esse o caso podes fazer um dos seguintes: - Guardar a DataTable em Viewstate, se a DT for mto grande o carregamento da página fica mais lento. - Guardar a DataTable em Sessão, se a DT for mto grande e tiveres mta gente a aceder ao mm tempo arriscas-te a esgotar a memória ao servidor. - Guardar a DataTable em Cache, este caso deves usar se a DT for igual para todos os utilizadores. - Ir á bd buscar registo a registo e não guardar DataTable, este caso deves usar qd o tamanho da DataTable for demasiado grande para os 2 primeiros casos, no entanto ainda podes recorrer á paginação. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
skcratch Posted September 9, 2009 at 01:44 PM Author Report #286231 Posted September 9, 2009 at 01:44 PM Viva! Já encontrei uma solução para o problema; peço desculpa pela resposta tardia. Depois de analisado o caso, foi concluído o número de registos nunca seria muito grande, tendo por base uma análise comparativa com as restantes componentes da aplicação. Sendo assim, optei por enviar todos os registos para o cliente (browser) e controlar ai a sua visibilidade, apenas mostrando um registo de cada vez. Grato desde já pela ajuda, Cumps! 🙂
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