WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 11.07.2005, 10:36   #1
chefkoch
superkeksi
 
Registriert seit: 08.03.2001
Ort: Wien
Alter: 41
Beiträge: 1.862


chefkoch eine Nachricht über ICQ schicken
Standard c# dataset problem

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
chefkoch ist offline   Mit Zitat antworten
Alt 11.07.2005, 11:48   #2
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

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
T.dot ist offline   Mit Zitat antworten
Alt 11.07.2005, 14:22   #3
chefkoch
superkeksi
 
Registriert seit: 08.03.2001
Ort: Wien
Alter: 41
Beiträge: 1.862


chefkoch eine Nachricht über ICQ schicken
Standard

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.
chefkoch ist offline   Mit Zitat antworten
Alt 11.07.2005, 14:46   #4
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

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
T.dot ist offline   Mit Zitat antworten
Alt 12.07.2005, 11:52   #5
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

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
Biri ist offline   Mit Zitat antworten
Alt 12.07.2005, 12:38   #6
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

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
T.dot ist offline   Mit Zitat antworten
Alt 12.07.2005, 12:58   #7
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

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
Biri ist offline   Mit Zitat antworten
Alt 12.07.2005, 13:20   #8
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

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
T.dot ist offline   Mit Zitat antworten
Alt 12.07.2005, 23:04   #9
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Standard

Zitat:
Original geschrieben von T.dot
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
Das ist aber logisch: du holst dir ein Object (bzw. referenzierst du auf ein Object) aus dem Cache. Wenn du das Objekt bearbeitest, dann ist es auch im Cache so drinnen. Wenn du das nicht willst, mußt es vorher klonen (=erzeugt ein neues Objekt)
Jaguar ist offline   Mit Zitat antworten
Alt 13.07.2005, 08:05   #10
chefkoch
superkeksi
 
Registriert seit: 08.03.2001
Ort: Wien
Alter: 41
Beiträge: 1.862


chefkoch eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Biri
.....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
wenn du zeit hast schau es dir an, ich bin bis jetzt dort ned weiter gekommen und hab daweil was anderes gemacht.
chefkoch ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:05 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag