![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
superkeksi
![]() |
![]() hallo
ich hab folgendes problem. ich lade mir beim start meines programmes in mein dataset drei spalten aus einer sql-tabelle. die erste spalte verwende ich als für mien dropdownfeld als textfeld und die zwiete spalte als das dazugehörige valuefeld. nun möchte ich auch noch den dritten wert abfragen anhand von dem wert aus dem value feld. sprich ich will ein select im dataset machen um nicht nochmal eine sqlverbinung herstellen zu müssen. jetzt frag ich mich ob das geht, wenn ja wie und wenn ned würd ich a andere lösung dazu brauchen? mfg daniel |
![]() |
![]() |
![]() |
#2 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Was mir so ganz auf die Schnelle einfällt und wenn ich dich richtig verstanden hab.
Dataset irgendwo zwischenspeichern und wenn du den Wert der Value ausliest auch die SelectedIndex Eigenschaft des Dropdownfeldes auslesen. Anhand dieses index die Zeile im Dataset auswählen und den Wert auslesen. d.h. xy = dsVal.tables[0].rows[dropdown.SelectedIndex]['Spaltenname'] Ich prog hauptsächlich VB.net, aber ich vermut in C# müsst des genauso gehen. Andere Option wäre im DefaultView eine Suche durchzuführen (dsVal.tables[0].defaultView.Find bzw. .Findrows, aber da kenn ich mich ned wirklich aus ![]() vl. hilfts dir was, mfg Thomas |
![]() |
![]() |
![]() |
#3 |
superkeksi
![]() |
![]() funkt teilweise
frage wieso speichert der mein dataset ned. ich mach nählich im pageload das fill des dropdownfeldes und in da funktion DropDownList1_SelectedIndexChanged hole ich mir den wert aus der dritten spalte. aber wenn ich selbst ned noch ein fill in der funktion mach vom dataset steigt er mit fehler aus. weiers streubt er sich noch mit der übergabe von dem wert. hab mir in da aspx.cs seite a eigene set und get funktion aber er übergibt ma ned die variable. |
![]() |
![]() |
![]() |
#4 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Wo speicherst denn das Dataset zwischen? Müsstest in ne Klassenvariable reinhauen, sonst ists natürlich weg.
Ansonsten hilft nur viel Debuggen ![]() Achja, das Pageload wird vor dem DropDownList1_SelectedIndexChanged ausgeführt, das könnte auch noch nen Einfluss darauf haben... mfg Thomas |
![]() |
![]() |
![]() |
#5 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() hi,
hmm, das ist jetzt schon bissl her, dass ich zuletzt was mit asp.net gemacht habe. machst du beim "SelectedIndexChanged" ein postback? wenn ja, sind danach natürlich alle variablen - auch dein dataset - weg. so funktioniert eine webapplikation - nach dem ferigen aufbauen deiner seite werden alle varialben weggeschmissen - beim neuanfordern der seite sind diese leer. lösung: inhalte, die über mehrere postbacks erhalten bleiben sollen entweder im viewstate oder der session speichern. wenn es applikaitonsübergreifend verfügbar sein soll (also nicht userspezifisch), den application cache verwenden. pseudocode: ----------- if (! ispostback) dataset = wert aus db laden cache = dataset else dataset = cache das ganze ins page_load event rein. hoffe, das hilft und trifft dein problem. da erinnere ich mich wieder, dass du mir mal ein programm zum durchsehen gemailt hast - ich bin leider noch immer nicht dazu gekommen - sorry, aber in der fa. hab ich dazu leider keine zeit und daheim kein visual studio 2003. falls es noch relevant ist - ev. komme ich im urlaub (in kürze) dazu. fg -hannes |
![]() |
![]() |
![]() |
#6 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Ad Postback:
stimmt, die Variable kommt ja nicht mehr zurück, hab ich was verwechselt... Ad Caching, das funkt so (VB): auslesen: dsDataset = CType(Me.Cache.Get("DeinName"), DataSet) speichern: Me.Cache.Insert("DeinName", dsDataset, Nothing, DateTime.MaxValue, TimeSpan.FromMinutes(15)) (in dem Fall wirds für 15 Minuten gespeichert) Du musst nur beim Bearbeiten eines gecachten Dataset aufpassen, da das ganzen anscheinend anhand von Referenzen funktioniert und so auch gleich im Cache mitgeändert wird (in meinem Anwendungsfall wollte ich das nicht). mfg Thomas |
![]() |
![]() |
![]() |
#7 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() hi,
noch ein nachtrag: achtung - chache gilt für alle user, d.h. wenn mehrere mit deiner appl. arbeiten und auf das cache objekt zugreifen, können sich die user gegenseitig überschreiben. d.h. cache gilt für die applikation, nicht für einzelne user. daher ev. session verwenden, diese gilt pro user. cache funktioniert aber nicht mit referenzen. wie sollte das funktionieren? sinn des caches ist ja, sich daten eines objektes zu merken, dass nach dem letzten verarbeitungsschritt (rendering) zerstört wird. wenn hier nur eine referenz gemerkt werden würde, wären die daten ja nach dem postback weg! artikel zu caching allgemein: http://www.codeproject.com/aspnet/caching.asp fg -hannes |
![]() |
![]() |
![]() |
#8 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Nein, meinte das anders. Hatte bei mir den Fall, das ich das Dataset ausgelesen hab ausn Cache und danach noch ein paar Spalten individuell hinzugefügt hab.
Wie ich das nächste Mal das Dataset aus dem Cache geholt habe, waren die Spalten auch schon dabei, obwohl ich es nicht neu in den Cache geschrieben hab. Deshalb hab ich vermutet, dass des Dataset nicht kopiert wird, wenn mans ausn Cache holt sondern man den Cache selst bearbeitet - Aber was weiß ich, tut wohl auch nix zum Thema ![]() |
![]() |
![]() |
![]() |
#9 | |
Classic Car Driver
![]() |
![]() Zitat:
|
|
![]() |
![]() |
![]() |
#10 | |
superkeksi
![]() |
![]() Zitat:
|
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|