2016-10-30 2 views
2

Daten in standart Datagridview sieht auch leerWinForms. Wie Tableadapter zu finden und füllen Datatable auf der Design-Time

enter image description here

und es ist unklar, wie die Daten aussehen in besonders angefertigt, gefüllt Gitter

Ich werde Erweitern Sie das Raster, um es komplexer aussehen zu lassen, aber das Ergebnis ist nur zur Laufzeit sichtbar, wenn es Daten enthält.

Also ich möchte DataTable zur Entwurfszeit füllen, um zu sehen, wie das Ergebnis im Grid aussieht. Also ich brauche Code

this.MyDataTableTableAdapter.Fill (this.dBTestDataSet.MyDataTable)

I this.dBTestDataSet.MyDataTable erhalten von Datasource kann perfrom wenn Datasource von Binding mit folgenden Code zugeordnet:

if ((DataSource is BindingSource) && String.IsNullOrEmpty(DataMember)) 
    { 
    BindingSource bindingSource = (DataSource as BindingSource); 
    if ((bindingSource.DataSource is DataSet) && (bindingSource.DataMember is String)) 
    { 
     DataSet dataSet = (bindingSource.DataSource as DataSet); 
     DataTable dataTable = dataSet.Tables[bindingSource.DataMember]; 
     return dataTable; 
    } 
    } 

jetzt habe ich MyDataTable

aber wie kann ich MyDataTableTableAdapter?

Ich sehe keine Verbindung zwischen MyDataTable und MyDataTableTableAdapter im porject Code

Obwohl die Entwicklungsumgebung korrekt die Dataadapter unter jeder Datentabelle zeigt.

enter image description here

enter image description here

+0

Können Sie genauer beschreiben, was genau Ihr Ziel ist? –

+0

Wie ich verstanden habe, gibt es Zugriff auf TableProvider in Entwurfszeit benötigt oder eine andere Möglichkeit zur Anzeige von realen Daten aus Datentabelle in Grids in ** Entwurfszeit **. IMHO, das ist eine nützliche Funktion, und in Embarcadero RAD Studio (Delphi) wird etwas Ähnliches verwendet: Wir können Live-Daten von DataSet in allen angefügten (verknüpften) Datensteuerelementen anzeigen. – BlackWitcher

Antwort

1

Ich glaube, es ist keine gute Idee, aktuelle Daten zu Designern zu laden. Sie können DataGridView füllen mit einigen gefälschten Daten, die gleiche Weise, die Web-Formular-Designer für ASP.NET GridView Kontrolle tun.

F: Wie kann ich MyDataTableTableAdapter bekommen? Ich sehe keine Verbindung zwischen MyDataTable und MyDataTableTableAdapter im Projektcode.

Jeder Datensatz hat eine XSD-Datei, die die Definition des Datensatzes Schema enthält und enthält auch einige Anmerkungen, die zur Erzeugung TableAdapter Klassen verwendet werden, zum Beispiel es einige Knoten wie enthält:

<TableAdapter BaseClass="System.ComponentModel.Component" 
DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" 
DataAccessorName="CategoryTableAdapter" 
GeneratorDataComponentClassName="CategoryTableAdapter" 
Name="Category" 
UserDataComponentName="CategoryTableAdapter"> 

Sie kann die Datei analysieren und die zugehörige TableAdapter für die DataTable extrahieren. Wie Sie oben sehen können, ist xml der Punkt, der sich auf TableAdapter und DataTable bezieht.

Sie können die Xsd-Datei mit Visual Studio-API-Methoden abrufen. Auch als eine einfachere Problemumgehung können Sie BuildAction zu Embedded Resource setzen und es von der kompilierten Assembly abrufen.

Hinweis

Eine weitere Option, die Ihre Anforderung Ihre DataGridView Kontrolle in UserControl und Laden von Daten in Konstruktor UserControl, auf diese Weise erfüllen kann, ist setzen, wenn Sie eine Instanz Ihrer UserControl auf eine Form gebracht, da der Designer führt den Konstruktor Ihrer UserControl dann die DataGridView wird mit Daten gefüllt werden.

Dann, wenn Sie Columns Eigenschaft von DataGridView freilegen möchten, können Sie this solution verwenden.

+0

Sie können sehen, wie ich die Datentabelle zur Entwurfszeit mit realen Daten in [diesem Beispiel] (https://dotnetfiddle.net/sHTJNZ) befülle. Ich ziehe es vor, es nicht in die Antwort aufzunehmen, weil es nur zum Spaß (und Lernzweck) ist, und ich schrieb es nur für Sie, um eine Idee zu haben, wie man die XSD-Datei analysiert. In dem Beispiel, das ich für die XDS-Datei verwendet habe, haben Sie "Build Action" auf "Embedded Resource" gesetzt. Aber im Allgemeinen empfehle ich nicht, es in einer realen Umgebung auf diese Weise zu verwenden. Die zweite Option, die ich geteilt habe, ist besser. –

+0

Lassen Sie mich wissen, wenn Sie Fragen zu dieser Antwort oder dem [verknüpften Beitrag] (http://stackoverflow.com/questions/36787383/expose-columns-property-of-a-datagridview-in-usercontrol-and-make) haben -it-editable-vi) oder wenn Sie sie nützlich finden :) –

+0

Es scheint, dass Ihre neuen Fragen zu der Anforderung, die Sie hier hatten, verwandt sind. Verpassen Sie nicht diesen Post: [Expose Columns-Eigenschaft eines DataGridView in UserControl und machen Sie es über Designer editierbar] (http://stackoverflow.com/questions/36787383/expose-columns-property-of-a-datagridview-in- usercontrol-and-make-it-editable-vi) –

Verwandte Themen