Werte an eine andere Seite übergeben

realmontanakid

Grünschnabel
Hallo zusammen

Brauche mal ein wenig schöpferische Hilfe.
Folgendes Szenario:
Ich habe eine Seite geschrieben in der ich Datensätze in eine DB einfüge. Es wird auch gleich ein Datagrid angezeigt.

Jetzt möchte ich das die aktuellen Werte, die ich in die DB einfüge auf einer neuen Sorte angezeigt werden. Und zwar wenn ich auf den Button "Hinzufügen" klicke. Dann soll sich ein neues Fenster mit den grad aktuellen Werten öffnen. Dazu brauch ich dann noch die Möglichkeit direkt von dieser neuen Seite zu drucken. Also auch einen Button worüber ich direkt drucken kann. Wenn jemand eine simplere Lösung hat, umso besser :) .
Hat jemand da eine Idee oder sowas schon mal realisiert?

Ich hänge den Code mal an....


Sub Page_Load (ByVal Sender As Object, _
ByVal E As EventArgs)
' Verbindungszeichenfolge zusammensetzen
Dim connStr As String
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
connStr += _
"Data Source=c:\inetpub\wwwroot\Hardware\Artikel_db.mdb;"

' Verbindung zur Datenbank herstellen
Dim conn As New OleDbConnection(connStr)
conn.Open()

' Bei einem Postback einen Datensatz anfügen
If IsPostBack Then
Dim iCmd As New OleDbCommand()
iCmd.Connection = conn

iCmd.Parameters.Add("@Hersteller", txtHersteller.value)
iCmd.Parameters.Add("@Artikel", txtArtikel.value)
iCmd.Parameters.Add("@Beschreibung", txtBeschreibung.value)
iCmd.Parameters.Add("@Preis", txtPreis.value)
iCmd.Parameters.Add("@Lieferant", txtLieferant.value)
iCmd.Parameters.Add("@Datum", txtDatum.value)
iCmd.Parameters.Add("@Bestellungsdatum", txtBestellungsdatum.value)
iCmd.Parameters.Add("@Lieferungsdatum", txtLieferungsdatum.value)
iCmd.Parameters.Add("@Mitarbeiter", txtMitarbeiter.value)
iCmd.Parameters.Add("@Garantie", txtGarantie.value)
iCmd.Parameters.Add("@Seriennr", txtSeriennr.value)


iCmd.CommandText = "INSERT INTO tbl_Artikel "
iCmd.CommandText += "(Hersteller, Artikel, Beschreibung, Preis, Lieferant, Datum, Bestellungsdatum, Lieferungsdatum, Mitarbeiter, Garantie, Seriennr) "
iCmd.CommandText += "VALUES (@Hersteller, @Artikel, @Beschreibung, @Preis, @Lieferant, @Datum, @Bestellungsdatum, @Lieferungsdatum, @Mitarbeiter, @Garantie, @Seriennr) "
iCmd.ExecuteNonQuery()
response.redirect("update_artikel.aspx")
End If

' SQL-Kommando erstellen und ausführen
Dim sql As String
sql = "SELECT * FROM tbl_Artikel"
Dim cmd As New OleDbCommand(sql, conn)
Dim myDataReader As OleDbDataReader
myDataReader = cmd.ExecuteReader()

' SQL-Resultat an ein Steuerelement binden
myGrid.DataSource = myDataReader
DataBind()

myDataReader.Close()
conn.Close()


End Sub
</script>
 
Hi,
ich kann nicht in VB programmieren, aber es sollte ähnlich wie in C# sein.

Du solltest eine Session aufmachen und dort die Elemete die zur übertragen willst speichern.

Session["transfer"]= Convert.ToString(Label1.Text); // da gebe ich ein String von Label1 aber ich glaube dass auch andere Objekte da übergeben werden können.
Response.Redirect("diezweite_seite.aspx");

dann auf die "diezweite_seite.aspx"

Label2.Text = (string) Session["transfer"]; // in Label1 übergebe ich die Daten von der erste Seite.

Hoffentlich hilft dir dass. Viel Glück!
 
So geht das, nur wird dann die Session zugemühlt. Ich würde das einfach als Parameter mit der URL übergeben:

string ParamListe;

ParamListe = Param1 +"&"
ParamListe += Param2 +"&"
ParamListe += Param3 +"&"
ParamListe += Param4
usw...

Response.redirect("seite_zwei.aspx?" +ParamListe);

Und auf der aufgerufenen Seite, beim OnLoad-Erreigniss, einfach die Parameter auswerten:

Parameter1 = Request.QueryString["Param1"];
Parameter2 = Request.QueryString["Param2"];
Parameter3 = Request.QueryString["Param3"];
Parameter4 = Request.QueryString["Param4"];


EDIT: Syntax probleme ;-)
 
Zuletzt bearbeitet:
Also geb ich auch noch meinen Senf dazu... :suspekt:

Die Möglichkeit die Werte mit dem Aufruf zu übergeben, würde ich nur dann ansetzten, wenn Du wenig Werte zur Übermittlung hast und solange kein komplizierter Datentyp übergeben werden muss. Ausserdem musst Du Dir klar darüber sein, dass die übertragenen Daten einsehbar sind!

Die Lösung mit dem Session Objekt ist sauber und auch für kompliziertere Datentypen geeignet. Mir scheint das intern mit einer Collection umgesetzt zu sein...oder Hashtable oder ähnliches. Das heisst, Du kannst vom eigenen Datentyp, bis hin zu ganzen Steuerelementen alles rein schmeissen!

Session.Add("derName",irgendeinObjekt);

"Zumüllen" passiert dann nicht, wenn Du nicht mehr genutzte Daten sofort entfernst! Heisst, nach dem Laden der Daten in Seite 2 den Satz Session["transfer"] leeren.

Gruß

Alex
 
Hallo,
wie bereits gesagt, gibts wohl nur die beiden Moeglichkeiten mit Session oder an die URL haengen.
Wenn du aus irgendeinem Grund nicht alle Werte uebergeben willst, kannst du ja einfach die id des letzten Beitrags uebergeben und abhaengig von der auf der neuen Seite die Daten aus der DB auslesen.

In Sachen Drucken, nutz ich immer lieber die Druckmoeglichkeiten die der Browser mir bietet, da is ja alles dabei was man braucht. Falls du aber unbedingt ein Button machen willst, solltest du die Methode im MSDN finden, denke das sollte nicht so schwer sein.

mfg
RAiner
 
Zurück