Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » ASP.NET und XML

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.02.2007, 22:25 Uhr
Eroli



Hallo zusammen,

ich möchte in ASP.NET eine Suche realisieren. Dazu werden nun erstmal alle gefundenen Einträge rausgesucht und temporär gespeichert.
Zur Serverschonung möchte ich diese Daten in einer XML-Datei speichern lassen.

Das Speichern über den C# Quellcode krieg ich hin, das sollte kein Problem sein.

1)
Wie ist die Struktur am besten? So?
<?xml version="1.0" encoding="utf-8" ?>
<Searches>
<Search ID="">
<Item ItemId="" ItemTitle="" ItemDescription="" ItemUser="" ItemCategorie=""></Item>
</Search>
</Searches>

Ich dachte mir, dass ich in die ID von Search einfach das Schlüsselwort eintragen lassen, nachdem gesucht wurde.
In ItemId, ItemTitle, Item Description, ItemUser und ItemCategorie(Das sind die Daten die rausgesucht werden) wollte ich die jeweiligen Daten der gefundenen Einträge reinschreiben.

WIE MACHE ICH DAS AM BESTEN? ICH HABE KEINE AHNUNG VON XML; ALSO KEINE WIRKLICHE ;-)

2)
Wie kriege ich die Daten aus der XML-Datei jetzt in eine Tabelle auf meiner Webseite? Mit einer DataList? Oder per Hand? Oder was meint ihr?


Viele Grüße,
Eroli
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.02.2007, 19:32 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
warum nimmst Du kein DataSet? Du brauchst am besten mit einem SQlDataAdapter und einer DataView arbeiten. Der Tabelle gibst du dann als DataSource die DataView. Fertsch...
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.02.2007, 19:34 Uhr
Eroli



Weil ich kein SQL mag ;-)

Nein, da diese Datei als "Suchpuffer" benutzt wird, damit nicht jede Suche auch wirklich gesucht wird ;-), dachte ich, dass die Daten in einer XML-Datei besser aufgehoben sind...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.02.2007, 23:12 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Du kannst dein DataSet einfach als XML Datei auf der Festplatte serialisieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.02.2007, 00:25 Uhr
Eroli



Was bitte meinst du??


ich will doch bloß irgendwie daten sichern, am besten lokal und diese dann in einem Table in Verbindung mit einem Repeater und einem DataSet ausgeben! Ist das sooo schwer??



Eroli
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.02.2007, 10:38 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
Ich raffe den Sinn immer noch nicht, aber man muss ja nicht alles verstehen.
Als erstes benötigst Du ein "wohlgeformtes" Xml-File:
(So wie da Oben wird das schwierig)

Code:
<?xml version="1.0" encoding="utf-8" ?>
<!--Root Element, ist im Prinzip die Tabelle-->
<Searches>
  <!--Datensatz, verkörpert eine DataRow-->
  <Search>
    <!--Attribute zum DS, verkörperte eine DataColumn -->
    <!--InnetText, verkörpert die Werte-->
    <SearchID>1</SearchID>
    <ItemId>56</ItemId>
    <ItemTitle>Title</ItemTitle>
    <ItemDescription>Description</ItemDescription>
    <ItemUser>User</ItemUser>
    <ItemCategorie>Categorie</ItemCategorie>
  </Search>
  <Search>
    <SearchID>102</SearchID>
    <ItemId>2</ItemId>
    <ItemTitle>Title2</ItemTitle>
    <ItemDescription>Description2</ItemDescription>
    <ItemUser>User2</ItemUser>
    <ItemCategorie>Categorie2</ItemCategorie>
  </Search>
</Searches>


Der Rest ist dann eigentlich recht simpel.

C++:
DataSet ds = new DataSet();
// DataSet füllen
ds.ReadXml(@"C:\SearchResult.xml");
// Stellt die Gesamtdatenmenge dar
DataView dv = new DataView(ds.Tables[0]);
// Speziellen Datensatz filtern, oder eben nicht
dv.RowFilter = "ItemId=56"; //dv.RowFilter = "";
GridView1.DataSource = dv;
DataBind();


--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 24.02.2007 um 10:41 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.02.2007, 11:29 Uhr
Eroli



Ja super. Ich glaube du hast mich verstanden!!

Dsa Problem lag also an dem Filtern.

Ich bedanke mich für den Codeausschnitt - das erklärt mehr als die ganze Hilfe von Microsoft zu dem Thema, finde ich!


Dankeschön,

Eroli
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.02.2007, 21:58 Uhr
Eroli



Oh man das wäre auch wieder zu leicht gewesen,
meine XML Datei sieht so aus:

Code:
<searches>
  <Eroli>
    <item>
      <id>2</id>
      <title>Titel1</title>
      <description>Description</description>
      <user>User</user>
      <categorie>Kategorie</categorie>
    </item>
    <item>
      <id>3</id>
      <title>Titel2</title>
      <description>Beschreibung2</description>
      <user>User2</user>
      <categorie>Kategorie2</categorie>
    </item>
  </Eroli>
</searches>


Hier habe ich jetzt also nach "Eroli" gesucht. Kann man das so machen und dabei die Kompatiblität wahren?


Code:
        DataSet auctions = new DataSet();
        auctions.ReadXml(@"D:\searches.xml");
        DataView auctionsDataView = new DataView(auctions.Tables[0]);
        //auctionsDataView.RowFilter = NameTextBox.Text;
        
        region Darstellung der Daten!
        // Bind Data to the repeater
        ProductsRepeater.DataSource = auctionsDataView;
        ProductsRepeater.DataBind();



Wieso klappt das nicht? er meckert immernoch "id" nicht gefunden...


Eroli
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.02.2007, 22:39 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
Das ist wie bei einer Db-Tabelle:
<Eroli> ist in dem Fall der Tabellenname. Du kannst nur nach Attributen (.RowFilter="Attribut=Wert") suchen. Dabei gilt gleiches wie für Datenbankabfragen. Strings sind in '' zu setzen. Also z.B.:
dv.RowFilter = "User='Eroli'";
Sonst versucht die RowFilter Methode auf einen numerischen Wert zu casten
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 24.02.2007 um 22:40 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
24.02.2007, 23:21 Uhr
Eroli



Achso, das it gut zu wissen.

Also wenn ich den Filter so setze:

dv.RowFilter = "SearchPattern='Eroli'";

und meine XML-Datei so umändere:


Code:
<searches>
  <!-- <Eroli> -->
    <item>
      <SearchPattern>Eroli</SearchPattern>
      <id>2</id>
      <title>Titel1</title>
      <description>Description</description>
      <user>User</user>
      <categorie>Kategorie</categorie>
    </item>
    <item>
      <SearchPattern>Eroli</SearchPattern>
      <id>3</id>
      <title>Titel2</title>
      <description>Beschreibung2</description>
      <user>User2</user>
      <categorie>Kategorie2</categorie>
    </item>
  <!-- </Eroli > -->
</searches>




...dann müsste es klappen oder???


NACHTRAG: was mir auffällt, wenn ich so mit XML arbeite, dann kann ich mir die SQL Datenbank auch schenken und alles in XML machen oder? Was meint ihr? Gibt es irgendwelche Vor und Nachteile?

So ganz wollte ich jetzt eigentlich nicht auf XML umsteigen, sollte nur ein Suchpuffer mit XML werden.........

Dieser Post wurde am 25.02.2007 um 00:06 Uhr von Eroli editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: