Frage zur Datagrid Darstellung bei Dataview

  • VB.NET
  • .NET (FX) 4.0

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Frage zur Datagrid Darstellung bei Dataview

    Hi zusammen,

    in den 4 Views Videos wird ja gezeigt wie beim DGV über Smart Tag mit einer Combo Box die FK Spalte der Parent Table nicht als ID (Valuemember) sondern der gewünschte Inhalt über (Displaymember) eingestellt wird.

    Was jedoch wenn das DGV für die Bearbeitung nicht freigegeben ist da z.B: nur über Detailview mit gebundenen EInzelcontrols gearbeitet wird?

    Kann ich da auch nur den Text darstellen?
    Gleivhes Problem besteht bei einer DATAVIEW, da wird der Datasource des DGV ja die Dataview zugewiesen, hier habe ich dann wieder die ID der Parenttable drin.

    Kann mir jemand erklären wie ich das schöner lösen kann?
    Gruß Hannes

    hans im glück schrieb:

    Was jedoch wenn das DGV für die Bearbeitung nicht freigegeben ist da z.B: nur über Detailview mit gebundenen EInzelcontrols gearbeitet wird?
    na nix!
    Wenn du das DGV oder einzelne Spalten daraus Readonly machst, dann kann der User halt nicht rumfummeln anne Combobox inne ComboboxColumn.

    Dein gleiches Problem verstehe ich nicht, insbesondere nicht, was daran gleich sein soll. Ein DGV kann im Designer per BindingSource an ein typDataset gebunden werden - dann kann man das DGV im Designer designen.

    Im Designer kann man aber nur via BindingSource binden, und wenn die Bindung nicht im Designer designed wurde, dann kann man das DGV auch nicht mehr designen im Designer - es ist gewissermassen untypisiert geworden.
    Da muss man dann eine Menge Code schreiben, um jede Column die man sehen will, codeseitig zuzufügen und zu konfigurieren. Und die Columns, die man nicht sehen wil, fügt man eben nicht zu.
    um das ganz mal zu zergliedern:
    Primär sollte alles im Designer gemacht werden = ist typsicher und weniger Arbeit. OK.


    Übrige Fragen:
    Es ist nicht möglich die Combobox gegen Text mit dem gleichen Inhalt aus zu tauschen?
    Ich finde es sieht einfach blöd aus wenn eine gesperrte COmbobox im DGV hängt die als Textzeile fungiert...

    Zum PRoblem mit dem Dataview:
    Kann ich die Tabelle aus dem Dataset auf die sich der Dataview bezieht nicht auch einfach im Designer bearbeiten und dann entsprechend die Datasource des DGV dem DAtaview zuweisen?
    Dann wäre das Problem ja gewissermaßen gelöst.
    Für verschiedene Views könnte ich verschiedene DGV´s aufs Form ziehen und designen die dann nach der Abfrage erst sichtbar werden und mit der nächsten Abfrage wieder unsichtbar...
    Gruß Hannes

    hans im glück schrieb:

    Ich finde es sieht einfach blöd aus wenn eine gesperrte COmbobox im DGV hängt die als Textzeile fungiert...
    Bei einer Readonly ComboColumn sollteste den DropDownStyle auf Nothing setzen - dann sieht die aus wie Textbox.

    hans im glück schrieb:

    Kann ich die Tabelle aus dem Dataset auf die sich der Dataview bezieht nicht auch einfach im Designer bearbeiten und dann entsprechend die Datasource des DGV dem DAtaview zuweisen?
    glaub wirr formuliert, und die Antwort fällt dementsprechend frustrierend aus: Natürlich kannst du jede Tabelle im Datset bearbeiten - nur einem DataView kannst du keine DataSource zuweisen, schon gar nicht die DataSource eines DGVs


    Aber ich glaub, du meinst was anneres:

    was ich glaube was du meinst schrieb:

    Kann ich das DGV wie normal im Designer per Bindingsource binden und einrichten, und zur Laufzeit nachträglich die Bindingsource durch ein Dataview ersetzen?
    Ja, jdfs. wenn das DataView ein View derselben DataTable ist.
    genau das meinte ich (sollte aus der Frage egtl. hervor gehen ;) )...

    das dgv wird über die bs der ds.datatable designed.

    dann wird ein dataview erzeugt und folgende dgvXxxx.datasource = dv.totable (oder so ähnlich frei aus dem Kopf)....
    Gruß Hannes

    ErfinderDesRades schrieb:



    Aber die Frage ist, warum eingens ein DataView erstellen? Um zu filtern? Das kann eine BindingSource ja selber.


    das ist einfach, da ich die dv direkt an den list and label reporter übergeben kann und mir in ll designer dann alle daten sauber ohne eine code zeile zur verfügung stehen ;)
    Gruß Hannes

    ErfinderDesRades schrieb:



    Nächste Frage: Ist der list and label reporter wirklich auf Dataviews als Datenquelle beschränkt? Oder kann man dem nicht auch eine BindingSource andrehen?


    das müsste ich mal den support von denen fragen, zumindest der doku kann ich das nicht entnehmen.
    Gruß Hannes

    ErfinderDesRades schrieb:

    naja, poste deinen Code - wie übergibst du das Dataview?


    der ll instanz wird über

    Quellcode

    1. ll.dataprovider = dv


    die dataview zugewiesen, das ist alles.

    hab grad aus der prog reference:

    AdoDataProvider Offers access to data of the following ADO.NET elements:  DataView  DataTable  DataViewManager  DataSet
    Gruß Hannes
    das bedeutet, dass diese Property den Typ Object hat, aber man darf nur ein son element angeben.
    Was wiederum bedeutet

    VB.NET-Quellcode

    1. ll.dataprovider = myBindingSource.List
    müsste gehen :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    ErfinderDesRades schrieb:

    das bedeutet, dass diese Property den Typ Object hat, aber man darf nur ein son element angeben.
    Was wiederum bedeutet

    VB.NET-Quellcode

    1. ll.dataprovider = myBindingSource.List
    müsste gehen :)


    habs getestet, funktioniert :)
    Gruß Hannes
    ich habe noch eine frage:

    wenn nun das object eine variante der datatable ist (über die binding source), habe ich als ergebnis bzgl. der inhalte der childtbl oder parenttable nur die entsprechenden id´s.

    wie gehe ich vor wenn ich die inhalte der datenzeilen der child/parenttable darstellen will?

    muss ich mir eine neue tabelle zur laufzeit anlegen und über getchildrows im prinzip die inhalte als eine datenzeile in der neuen tabelle darstellen?


    edit:schreibfehler
    Gruß Hannes

    ErfinderDesRades schrieb:

    keine ahnung - ich hab kein list&labels


    ich brauch halt alle infos in einem object, daher war die idee eine neue datatable mit den informationen aus der bindingsource mit getchild... zu befüllen und dann diese zu übergeben.
    Gruß Hannes
    jo, sehr gut möglich, dass man das hier als Export-Funktionalität ansehen muss, und folglich extra eine DataTable anlegt und befüllt und übergibt und hinterher wieder löscht.

    Nur Getchilds() ist natürlich böse, weil untypisiert.
    Mag ja sogar sein, dass die Export-DataTable untypisiert bleibt (man will ja nix weiter von der), aber das Zusammensammeln der Daten sollte typisiert erfolgen.