tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
2215
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Major18 Major18 ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    25
    Hi@all:

    Eine kleine Frage:

    Und zwar hab ich ein XML-File in dem Newseinträge gespeichert werden.

    Jetzt will ich diese in eine ListView laden.

    Gut, das auslesen der Werte funktioniert prima, nur wie krieg ich die Daten jetzt in ein DataSet rein?

    Das DataSet übergeb ich dann der ListView als Datasource.


    Hoffe Ihr könnt mir helfen.

    Lg
    Major 18
     

  2. #2
    Major18 Major18 ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    25
    Ok, die Frage hat sich erledigt, ich lade die Datensätze in eine Liste.

    Das funktioniert wunderbar, aber jetzt hab ich das Problem dass die ListView nicht ins ItemDataBound-Event springt. Und somit kann ich auch die Daten aus der List ned laden.

    Hier die Syntax der Listview:

    HTML-Code:
    <asp:ListView ID="lstvwNews" EnalbleViestate="true" runat="server" Visible="true">
    <LayoutTemplate>
        
    </LayoutTemplate>
    <ItemTemplate>
        <div style="border:solid 1px black;">
            <table id="Table1" cellspacing="0" border="1" cellpadding="0" runat="server" width="400px" runat="server">
            <tr>
                <td><label id="lblId"><%# Eval("ID") %></label></td>
                <td><b><label id="lblTitle" ><%# Eval("Title") %></label></b></td>
                <td><label id="lblDate"><%# Eval("Date") %></label></td>
            </tr>
            <tr>
                <td colspan="3"><label id="lblText"><%# Eval("DetailedNews")%></label></td>
            </tr>
        </table>
        </div>
        <asp:DataPager ID="DataPager1" runat="server">
            <Fields>
              <asp:NumericPagerField />
            </Fields>
       </asp:DataPager>
    </ItemTemplate>
    
    </asp:ListView>
    Und hier das Codebehind:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                this.lstvwNews.ItemDataBound += new EventHandler<ListViewItemEventArgs>(lstvwNews_ItemDataBound);
                if (!Page.IsPostBack)
                {
                    Bind();
                }
            }
     
            private void Bind()
            {
                this.lstvwNews.DataSource = classes.XMLManager.LoadNews();
                
            }
     
            protected void lstvwNews_ItemDataBound(object sender, ListViewItemEventArgs e)
            {
                
            }
     
     
             
        }

    Hier werden die vorhandenen Datensätze aus dem XML-file in ein neues News-Object geladen, welches zu einer List<> hinzugefügt wird:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    public static List<News> LoadNews()
            {
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.IgnoreComments = true;
                settings.IgnoreWhitespace = true;
                DataSet ds = new DataSet("News");
                List<News> lst = new List<News>();
                XmlReader reader = XmlReader.Create(@"E:\ASP.NET\markus.RTA.Solution\RTA_Relaunch\library\xml\News.xml", settings);
     
                while (reader.Read())
                {
                    News n = new News();
                    reader.ReadStartElement("News");
                    reader.ReadStartElement("ID");
                    n.NewsId= Convert.ToInt32(reader.ReadString());
                    reader.ReadEndElement();
                    reader.ReadStartElement("Title");
                    n.NewsTitle = reader.ReadString();
                    reader.ReadEndElement(); 
                    reader.ReadStartElement("Date");
                    n.NewsDate = Convert.ToDateTime(reader.ReadString());
                    reader.ReadEndElement(); 
                    reader.ReadStartElement("DetailedNews");
                    n.NewsDetail = reader.ReadString();
                    reader.ReadEndElement();
     
                    lst.Add(n);
                    
                }
     
                return lst;
            }

    Irgendwie hab ich da keinen Durchblick mehr,....ich hoffe Ihr könnt mir da nen Ansatz geben.

    Lg
    Major18
     

  3. #3
    Major18 Major18 ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    25
    Weiß niemand rat?
     

  4. #4
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hi.

    Code :
    1
    2
    3
    4
    5
    
    private void Bind()
    {
        this.lstvwNews.DataSource = classes.XMLManager.LoadNews();
        [color=red]this.lstvwNews.DataBind();[/color]
    }

    Beim DataBinding in ASP.net soltest du die DataBind-Methode aufrufen.

    lg,..
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  5. #5
    Major18 Major18 ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    25
    Hallo Alexander,

    danke für deine schnelle antwort.

    Nun ich habs mit der Databind-Methode probiert, jedoch ist die Seite leer, obwohl 1 News-Object in der Liste ist.

    Und obwohl ich bei der ListView auch ein Event für OnItemDataBound="lstvwNews_ItemDataBound" , angegeben habe, wird das Event nicht aufgerufen, sollte aber wenn ich die Daten ans Grid binde.

    Was mache ich falsch bzw. wo liegt mein Denkfehler?
     

  6. #6
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Mhm..

    also das Event brauchst ansich nicht. Nur, wenn du während dem Binding irgendetwas machen willst. Ansonsten sollte die Zuweisung der "DataSource" und das aufrufen von "DataBind" ausreichen.

    Sicher das Daten vorhanden sind?

    Debug doch mal die Seite. Mach mal einen Breakpoint auf die DataBind Methode, und schau dir an, was als DataSource vorhanden ist. Vielleicht ist da ja ein Fehler.
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  7. #7
    Major18 Major18 ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    25
    Ich hab das mal durchdebuggt, und vorher der ListView die Liste als DataSource zugewiesen.
    Jetzt krieg ich beim DataBind folgende fehlermeldung:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    Server Error in '/' Application.
    An item placeholder must be specified on ListView 'lstvwNews'. Specify an item placeholder by setting a control's ID property to "itemPlaceholder". The item placeholder control must also specify runat="server".
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
     
    Exception Details: System.InvalidOperationException: An item placeholder must be specified on ListView 'lstvwNews'. Specify an item placeholder by setting a control's ID property to "itemPlaceholder". The item placeholder control must also specify runat="server".
     
    Source Error:
     
    Line 31:             nList = classes.XMLManager.LoadNews();
    Line 32:             this.lstvwNews.DataSource = nList;
    Line 33:             this.lstvwNews.DataBind();
    Line 34: 
    Line 35: 
     
     
    Source File: E:\ASP.NET\markus.RTA.Solution\RTA_Relaunch\Default.aspx.cs    Line: 33

    Welchem Item/Controll muss ich da diese ItemPlaceholderid geben?
     

  8. #8
    Major18 Major18 ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    25
    Hi@all:

    Also das Laden der Liste in die ListView klappt tadellos.

    Nun habe ich mehrer Einträge ins XML geschrieben, aber ich kriege folgende XMLException:
    'Element' is an invalid XmlNodeType. Line 9, position 4.
    Das XML-file ist folgendermassen aufgebaut:

    HTML-Code:
    <News>
      <Message>
        <ID>1</ID>
        <Title>Test</Title>
        <Date>06.01.2009</Date>
        <DetailedNews>This is a Testmessage</DetailedNews>
      </Message>
      <Message>
        <ID>2</ID>
        <Title>Test</Title>
        <Date>08.01.2009</Date>
        <DetailedNews>This is a Testmessage</DetailedNews>
      </Message>
    </News>
    Ich springe nun im Code von Node zu Node, sprich ich lasse zuerst das News-Node auslesen, dann das Message-Node,etc.. ich schließe die reader auch alle wieder mit ReadEndElement, aber irgendwie schmeckt ihm der 2. Eintrag nicht.
    Hier Funktion zum auslesen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    
    public static List<News> LoadNews()
            {
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.IgnoreComments = true;
                settings.IgnoreWhitespace = true;
                DataSet ds = new DataSet("News");
                List<News> lst = new List<News>();
                XmlReader reader = XmlReader.Create(@"E:\ASP.NET\markus.RTA.Solution\RTA_Relaunch\library\xml\News.xml", settings);
     
                while (reader.Read())
                {
                    News n = new News();
     
                    reader.ReadStartElement("News");
                    reader.ReadStartElement("Message");
                    reader.ReadStartElement("ID");
                    n.NewsId= Convert.ToInt32(reader.ReadString());
                    reader.ReadEndElement();
                    reader.ReadStartElement("Title");
                    n.NewsTitle = reader.ReadString();
                    reader.ReadEndElement(); 
                    reader.ReadStartElement("Date");
                    n.NewsDate = Convert.ToDateTime(reader.ReadString());
                    reader.ReadEndElement(); 
                    reader.ReadStartElement("DetailedNews");
                    n.NewsDetail = reader.ReadString();
                    reader.ReadEndElement();
                    reader.ReadEndElement();
                    reader.ReadEndElement();
     
                    lst.Add(n);
                    
                }
     
                return lst;
            }


    Was könnte ich da falsch gemacht haben?
     

  9. #9
    Major18 Major18 ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    25
    Niemand der mir helfen könnte?
     

  10. #10
    Major18 Major18 ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    25
    Kann mir den niemand nen Lösungsansatz geben?
     

Ähnliche Themen

  1. Aus TreeView ein Formular in ListView laden
    Von osbam im Forum .NET Windows Forms
    Antworten: 4
    Letzter Beitrag: 09.09.08, 13:02
  2. Listview Text laden
    Von Hackmaster im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 03.05.07, 09:28
  3. Schreiben und Laden von Files
    Von jorgeHX im Forum Java
    Antworten: 7
    Letzter Beitrag: 12.12.04, 13:53
  4. ListView/ComboBox-Inhalt speichern u. laden
    Von ChMaster im Forum .NET Archiv
    Antworten: 5
    Letzter Beitrag: 15.11.04, 14:42
  5. php-Files in php-Files laden
    Von mc_gyver im Forum PHP
    Antworten: 3
    Letzter Beitrag: 13.09.03, 22:51