187 messaggi dal 23 maggio 2002
non so + cosa fare vi posto il mio codice, nn da errore ma nn si vede nulla:
<%@ Page Language="VB" Debug="true" %>
<%@ Register TagPrefix="MyAsp" TagName="Top" Src="Top.ascx" %>
<%@ Register TagPrefix="MyAsp" TagName="Botton" Src="Botton.ascx" %>
<%@ import Namespace="System.Xml" %>
<%@ import Namespace="System.Data" %>
<script runat="server">

    Sub Page_Load (obj as object, e as EventArgs)
      if Not Page.IsPostBack then BindData()
     End Sub

     Sub BindData()

        Dim xNews as XmlTextReader
        Dim dsXml As New DataSet

        xNews = new XmlTextReader(Server.MapPath("News.xml"))
        'response.write(xNews.Name &"="& xNews.Value &"<br>")
        'response.end
        dsXml.ReadXml(xNews)

        News.DataSource = new DataView(dsXml.Tables("xNews"))
        News.DataBind()
        xNews.close()

     End Sub

</script>
..............
<asp:Repeater id="News" runat="server">
                                                                                        <ItemTemplate>
                                                                                            <%#Container.DAtaItem("Titolo")%>
                                                                                        </ItemTemplate>
                                                                                    </asp:Repeater>


e il file xml su cui lavoro è questo:
- <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"> 
- <s:Schema id="RowsetSchema"> 
- <s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30"> 
- <s:AttributeType name="IDnews" rs:number="1"> 
<s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" rs:maybenull="false" /> 
</s:AttributeType> 
- <s:AttributeType name="Data" rs:number="2" rs:nullable="true" rs:writeunknown="true"> 
<s:datatype dt:type="dateTime" rs:dbtype="timestamp" dt:maxLength="16" rs:scale="0" rs:precision="16" rs:fixedlength="true" /> 
</s:AttributeType> 
- <s:AttributeType name="Testo" rs:number="3" rs:nullable="true" rs:writeunknown="true"> 
<s:datatype dt:type="string" dt:maxLength="150" /> 
</s:AttributeType> 
- <s:AttributeType name="Articolo" rs:number="4" rs:nullable="true" rs:writeunknown="true"> 
<s:datatype dt:type="string" dt:maxLength="1073741823" rs:long="true" /> 
</s:AttributeType> 
- <s:AttributeType name="Link" rs:number="5" rs:nullable="true" rs:writeunknown="true"> 
<s:datatype dt:type="string" dt:maxLength="50" /> 
</s:AttributeType> 
<s:extends type="rs:rowbase" /> 
</s:ElementType> 
</s:Schema> 
- <rs:data> 
<z:row IDnews="4" Data="2004-01-18T00:00:00" Testo="Pippo" Articolo="bla bla bla bla" Link="" /> 
........................ 
</rs:data> 
</xml> 


Vi prego aiutatemi ci sto sbattendo la testa da tanto: ho provato sia in locale che sul server... niente, vedo la pagina con lo sfondo, ecc ma non vedo nessun dato dal foglio xml....
187 messaggi dal 23 maggio 2002
in questo modo
<script runat="server">

    Sub Page_Load (obj as object, e as EventArgs)
      if Not Page.IsPostBack then BindData()
     End Sub

     Sub BindData()
        Dim dsXml As New DataSet()
        dsXml.ReadXml(Server.MapPath("database.xml"))
        News.DataSource = dsXml.Tables(0).DefaultView
        News.DataBind()
    End Sub

</script>
..........
<asp:DataGrid id="News" runat="server"></asp:DataGrid>


e con un foglio xml di prova vedo correttamente:
<?xml version="1.0"?>
<database>
<utente>
<nome>Luca</nome>
<cognome>Ruggiero</cognome>
</utente>
</database>

ma se provo a leggere il file xml postato prima leggo:
id_data
0

dove id_data non è un campo nemmeno del foglio xml, nn so dove lo legge.

help please.
Elisa
187 messaggi dal 23 maggio 2002
è lunedì ed ancora ho difficoltà... nessuno di voi sa come si può leggere quel file xml postato prima (un recordset ado esportato in xml) in asp.net???

in asp si faceva una cosa del genere:
Recordset.Open PercorsoFile & "\News.xml", , 3, 2, 256

help please...
32 messaggi dal 08 novembre 2001
www.marinweb.net
Ciao,

prova cosi'

Nel REPEATER:
<form runat=server>
<asp:Repeater id="News" runat="server">
<ItemTemplate>
<%#Container.DAtaItem("Articolo")%>
</ItemTemplate>
</asp:Repeater>
</form>

NELLA SUB:
Sub BindData()
Dim xNews As XmlTextReader
Dim dsXml As New DataSet()
xNews = New XmlTextReader(Server.MapPath("News.xml"))
dsXml.ReadXml(xNews)
News.DataSource = dsXml.Tables(1)
News.DataBind()
xNews.Close()
End Sub

Ti consiglio comunque di cercare sul sito MSDN l'XSLT che consente di trasformare il recordset ADO salvato in XML in qualcosa di piu' leggibile...

Saluti.
D.

Davide Marin
http://www.marinweb.net
187 messaggi dal 23 maggio 2002
Funziona perfettamente, ti ringrazio.

Io avevo tentato in altro modo ma avevo problemi di visualizzazione. Ora userò il tuo sistema ma se mi potresti spiegare il motivo di questi problemi ne sarei felice (imparo una cosa nuova!)

Dunque: avevo fatto così:
Sub BindData()
        dim NXml as XmlTextReader
        Nxml = new XmlTextReader (Server.MapPath("News.xml"))

            Dim i as integer = 0

                while NXml.Read()
                    i=i+1
                    Dim lb As New Label()
                    lb.ID = "l"&i
                    lb.Text = NXml("Data")&"<br>"
                    Me.phNews.Controls.Add(lb)
                end while
    End Sub

...........
<tr>
                                                                                <td width="325">                                                                                 <asp:PlaceHolder id="phNews" runat="server"></asp:PlaceHolder>                                                                          </td>
                                                                            </tr>


così i risultati venivano stampati ma non mi rispettava il layout. Li stampava giù in fondo alla pagina, ripetendo lo sfondo 3 o 4 volte, invece di metterli nella cella. Perchè?

Grazie,
Elisa

PS: nella tua soluzione però non so come fare a prendere solo i primi 3 record diciamo...
Modificato da elisa_rm74 il 27 settembre 2004 17.14 -
32 messaggi dal 08 novembre 2001
www.marinweb.net
Ciao,

il problema che hai con la visualizzazione dipende probabilmente dal fatto che usi oggetti di tipo placeholder, che vengono renderizzati in una sequenza di tag <span> mentre dovresti gestire TR e TD in modalita' runat server e aggiungere quindi elementi alla tabella in modo dinamico per avere un controllo migliore.

Per selezionare solo alcuni nodi dall'XML ti consiglio di usare il DOM con cui puoi scegliere mediante query XPATH gli elementi che ti interessano.

Ad esempio qualcosa del genere (e' C# ma ho un po' di fretta...)

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("data/xmlfile1.xml"));
XmlNodeList nodes = doc.SelectNodes("Projects/Packages");
dataGrid.DataSource = nodes;
dataGrid.DataBind();

Saluti.
D.

Davide Marin
http://www.marinweb.net
187 messaggi dal 23 maggio 2002
bhe lo so che sono un caso irrecuperabile!!! Dunque, ti spiego, non sapendo fare ne in un modo ne nell'altro, avevo optato, forse, per il male minore! Pensavo di usare una tabella runat server. Ho letto la documentazione su msdn e ho tentato così:
Sub BindData() 
dim NXml as XmlTextReader 
Nxml = new XmlTextReader (Server.MapPath("News.xml")) 
while NXml.Read() 
Dim i As Integer 
Dim j As Integer 
For i=0 To TNews.Rows.Count - 1 
For j=0 To TNews.Rows(i).Cells.Count - 1 
TNews.Rows(i).Cells(j).InnerHTML = NXml("Data") 
Next j 
Next i 
end while 
End Sub 
................... 
<table id="tNews" runat="server" border=0> 
<tbody> 
<tr> 
<td> 
</td> 
</tr> 
<tr> 
<td> 
</td> 
</tr> 
<tr> 
<td> 
</td> 
</tr> 
</tbody> 
</table> 

In questo modo, però, purtroppo, non mi da errore ma nn vedo + nemmeno il dato del mio foglio xml: ad esempio NXml("Data").

Ne uscirò mai da questa cosa?????
32 messaggi dal 08 novembre 2001
www.marinweb.net
Ciao,

non disperare :-) ci vuole pero' un attimo per impadronirsi delle varie tecniche necessarie: prova a studiarti un po' la gestione dell'XML in se', i vari metodi per usare nodi, elementi ecc, poi ti sara' piu' facile usarlo in ogni contesto. Anche per quanto riguarda l'uso di webcontrol e htmlcontrols guarda qualche esempio online e prova un po' a impratichirti con gli elementi.
Io ti posso fare un esempio di come impaginare un pochino l'XML del tuo post originale, puoi partire da questo per le prove

Come HTML usa:
<table runat=server id="phNews">
</table>

Come CODICE:
Sub BindData()
Dim NXml As XmlTextReader
Dim dsXml As New DataSet()
NXml = New XmlTextReader(Server.MapPath("News.xml"))
dsXml.ReadXml(NXml)

Dim i As Integer = 0
Dim j As Integer = 0
For i = 0 To dsXml.Tables(1).Rows.Count - 1
Dim newRow As New HtmlTableRow()
For j = 0 To dsXml.Tables(1).Columns.Count - 1
Dim newCell As New HtmlTableCell()
newCell.InnerText = dsXml.Tables(1).Rows(i)(j)
newCell.Align = HorizontalAlign.Center
newRow.Cells.Add(newCell)
newCell.Dispose()
newCell = Nothing
Next
Me.phNews.Rows.Add(newRow)
newRow.Dispose()
newRow = Nothing
Next
End Sub


Saluti.
D.

Davide Marin
http://www.marinweb.net

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.