Jump to content

ASP.NET XML e Gridview


Tesla

Recommended Posts

Olá pessoal.

Estou a iniciar um projecto e comecei logo a dar cabeçadas.

Estou a usar o visual studio 2010 e estou a tentar fazer um site que vai produzir informação a partir de uma base de dados em XML que é carregada por outra aplicação.

Começo a fazer o site e vou directo ao menu. Da forma como a estrutura do XML está feita, posso recolher os valores únicos de um dos sub-elementos e compor o menu de navegação com isso. Assim sendo, a criação do NavigationMenu foi muito fácil. Criação da XmlDataSource, chapar lá para dentro o ficheiro com os dados e XPath corresponde e voilá. So far so good... pensei eu!

Começo a tratar da página com o Main Content Holder e necessito de ir buscar um gridview para apresentar um determinado set de informação que está no ficheiro XML já referido acima. Porreiro. Começo a criar a gridview, manda-me logo criar a DataSource e quando a acabo de criar, com o ficheiro XML e com o XPath que eu entendo adequado... NADA! Não me aparecem dados na Gridview!

Já estou de volta disto há umas horas e até já coloquei na Gridview a mesma receita que coloquei no menu de navegação... e nada... não me saiem dados!

Não sei o que fazer...

Edited by Caça

Assinatura editada pelo staff, por favor consulte as regras.

Link to comment
Share on other sites

Boas.

Já resolvi o problema. Mas agora encontrei outro.

Acontece que preciso que o XSLT faça a transformação tendo input da data corrente.

Fiz um script em C# que me cria esse dado e o coloca no for-each.

Se correr o XSLT contra o XML dentro do visual studio, tudo sai bem. No entanto na página onde ele deve ser apresentado (através de um gridview) primeiro dei-me um erro de CAS policy que resolvi, mas depois voltou a dar um outro que diz apenas "Execution permission cannot be acquired".

Código:

...
<msxsl:script language="C#" implements-prefix="user">
  <![CDATA[
   public string data()
   {
 string data = DateTime.UtcNow.ToShortDateString();
 string[] data1 = Regex.Split(data,"-");
 data = data1[2]+"-"+data1[1]+"-"+data1[0];
 return data;
   }
   ]]>
 </msxsl:script>
 <xsl:output method="xml" indent="yes" encoding="iso-8859-15"/>
 <!--Criacao da raiz do documento-->
 <xsl:template match="/">
   <artigos>
  <xsl:for-each select="artigos/artigo[rating < 40][data=user:data()]">
...

Assinatura editada pelo staff, por favor consulte as regras.

Link to comment
Share on other sites

Boas.

Pronto, acabei por dar a volta ao problema adoptando outra abordagem.

Como o site vai ter uma ferramenta por trás a recolher dados, o que fiz foi colocar no XSLT um parametro que recolhe a ultima data registada na base de dados e usa-a para processar o resto.

Bom, agora tenho outro problema. No menu de navegação a partir dum XML (que foi definido como estático, porque vai ser sempre igual em todas as páginas), queria que cada um dos links deste menu fosse produzido da seguinte forma:

Opção = Pastor ; Link = caracteristica.aspx?caract=Pastor

Opção = Agricultor ; Link = caracteristica.aspx?caract=Agricultor

Opção = Apicultor ; Link = caracteristica.aspx?caract=Apicultor

Não consigo encontrar solução para isto. Alguém pode? ;-)

Edited by Tesla

Assinatura editada pelo staff, por favor consulte as regras.

Link to comment
Share on other sites

Resolvido.

Bastou introduzir código na página onde está o menu.

protected void Page_Load(object sender, EventArgs e)
   {
    NavigationMenu.MenuItemDataBound += new MenuEventHandler(NavigationMenu_MenuItemDataBound);
   }
   void NavigationMenu_MenuItemDataBound(object sender, MenuEventArgs e)
   {
    //throw new NotImplementedException();
    for (int i = 0; i < NavigationMenu.Items.Count; i++)
    {
	    NavigationMenu.Items[i].NavigateUrl = "~/caracteristica.aspx?caract=" + NavigationMenu.Items[i].Text.ToString();
    }
   }

Assinatura editada pelo staff, por favor consulte as regras.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.