Gebundene Datagridview kopieren
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 101 Antworten in diesem Thema. Der letzte Beitrag () ist von schnibli.
-
-
Das war Voreingestellt, so weit bin ich gekommen.
Edit:...
geschafftDieser Beitrag wurde bereits 2 mal editiert, zuletzt von „schnibli“ ()
-
-
nun, ich weiß nicht mehr, worums aktuell genau geht. Ich weiß nur, dass du mittm OB es in der Hand hast, jede Methode, dies gibt, syntaktisch richtig zu verwenden.
-
-
Anleitung (Bild-)DateiAnhänge
ansonsten weißich auch nicht, wie das gehen soll.
Es gibt ja garkeine Bestellung - wie soll man da einen Bestellposten zufügen, bei dem eine Anzahl einzutragen wäre? -
-
Also wenn du keinen Bestellung-Datensatz hast, dann kannst du keinen Bestellposten-Datensatz zufügen, so einfach ist das.
In deim Bildle ist nix von einem Bestellung-Datensatz zu sehen, aber es kann ja sein, dass unsichtbar iwo einer da ist. Ist einer da? -
-
es ist machbar, und die zuständige Methode hast du ja im OB schließlich gefunden. Und da kannst du nachlesen, welche Parameter die verlangt.
Im Grunde steht da im OB nix anneres, als wassichdir in meinen letzten beiden Posts zu sagen versuche. -
was du auch machen könntest: ein dgv, was alle Posten einer Bestellung anzeigt - ist das das bei dir unten rechts?
Und dann im AddingNew - Event der PostenBindingSource im neuen PostenDatensatz geschwind noch die ID des im ArtikelGrid angewählten Artikels eintragen.
Jo, das wäre ohne Button und ohne die AddPostenRow-Methode.
Und wenn dein dgv untenrechts alle Posten einer Bestellung anzeigt (ParentChildView, mit ComboboxColumn für den Artikel), dann brauchst du am Posten-DGV auch nix rumzufummeln - einzig das AddingNew-Event der BindingSource behandeln. -
VB.NET-Quellcode
- Public Overloads Function AddPostenRow(ByVal parentArtikelRowByFK_Artikel_Posten As ArtikelRow, ByVal parentBestellungenRowByFK_Bestellungen_Posten As BestellungenRow, ByVal Anzahl As String) As PostenRow
- Dim rowPostenRow As PostenRow = CType(Me.NewRow,PostenRow)
- Dim columnValuesArray() As Object = New Object() {Nothing, Nothing, Anzahl}
- If (Not (parentArtikelRowByFK_Artikel_Posten) Is Nothing) Then
- columnValuesArray(0) = parentArtikelRowByFK_Artikel_Posten(0)
- End If
- If (Not (parentBestellungenRowByFK_Bestellungen_Posten) Is Nothing) Then
- columnValuesArray(1) = parentBestellungenRowByFK_Bestellungen_Posten(0)
- End If
- rowPostenRow.ItemArray = columnValuesArray
- Me.Rows.Add(rowPostenRow)
- Return rowPostenRow
- End Function
Dies ist steht ja da unter add posten row , nun ich hab kein plan wie ich das ändern muss... :s -
das sagte ich schon vor langer zeit, dasses nicht darum geht, eine neue addpostenRow zu schreiben, denn es gibt ja bereits eine.
das hier kannste also löschen.
wolltest du nicht was mit einem Button machen? -
-
-
Jetz hab ich es gelöscht.
Nein, momentan kann ich ja mit einer Combobox einen Artikel im dgv Posten hinzufügen, dies ist sehr unübersichtlich und ich kann artikel nur Durchscrollen
ich möchte Anstat mit der Combobox die Artikel wählen, den ARtikel in einem anderen dgv anklicken und mit dem button anschliessen den selectierten artikel in das posten dgv übertragen :s -
guckma, ich hab Minikass ein bischen erweitert:
VB.NET-Quellcode
- Private Sub srcPosten2_ListChanged(ByVal sender As Object, ByVal e As ListChangedEventArgs) Handles srcPosten2.ListChanged
- If e.ListChangedType <> ListChangedType.ItemAdded Then Return
- Dim rwPosten = DirectCast(DirectCast(srcPosten2(e.NewIndex), DataRowView).Row, PostenRow)
- If rwPosten.RowState <> DataRowState.Detached Then Return
- rwPosten.ArtikelRow = DirectCast(DirectCast(ArtikelBindingSource.Current, DataRowView).Row, ArtikelRow)
- End Sub
Also dassis jetzt der Ansatz ohne Button, sondern wo man einfach ins PostenGrid eine Anzahl schreibt, und den Artikel holtersich aus der ArtikelBindingSource.
Es geht also nicht mit BindingSource_AddingNew - Event, sondern mittm ListChanged - Event, und dann muß man auch noch den ListChangedType checken, und obs geaddete Item auch Detached ist. -
-
uff - dat war jetzt aber schwer:
VB.NET-Quellcode
- Imports WindowsApplication1.DataSet1
- '...
- Private Sub PostenBindingSource_ListChanged(ByVal sender As Object, ByVal e As ListChangedEventArgs) Handles PostenBindingSource.ListChanged
- If e.ListChangedType <> ListChangedType.ItemAdded Then Return
- Dim rwPosten = DirectCast(DirectCast(PostenBindingSource(e.NewIndex), DataRowView).Row, PostenRow)
- If rwPosten.RowState <> DataRowState.Detached Then Return
- rwPosten.ArtikelRow = DirectCast(DirectCast(ArtikelBindingSource.Current, DataRowView).Row, ArtikelRow)
- End Sub
Aber ich weiß nicht, obs sinn hat, dass du eine DB-Anwendung entwickelst: Bei dir ist Anzahl vom Typ String, Datum vom Typ String, Preis vom Typ String.
Also wenn nichtmal eine Vorstellung besteht, dass man die Datentypen entsprechend der Art der Daten festlegen muß (deswegen heisstes ja: "Daten-Typ") ...
Und alle Daten sind Nullable (AllowDbNull=True), also man kann bei dir Artikel anlegen, ohne Angabe eines Namens für den Artikel. -
Hallo Erfinder des Rades,
Ich habe "AllowDbNull=True" und die Typendeklaration in meiner Datenbank angepasst und das "PostenBindingSource_ListChanged" auch rein Programmiert, jetz ist die frage, ich lese das Datagridview der Bestellung in ein Excel file und schicke dies Per E-Mail weiter. nun wenn ich das Posten datagridview in ein Exel file schreiben lasse, werden da nur die "ID's" Angezeigt, kann man das Ändern sodass auch ein Artikel-Name angezeigt wird?
Danke für deine Hilfe
-
Ähnliche Themen
-
2 Benutzer haben hier geschrieben
- schnibli (55)
- ErfinderDesRades (47)