Kati82 Geschrieben 25. März 2009 Teilen Geschrieben 25. März 2009 Hi @all: Wie der Titel schon sagt, möchte ich einzelne Zellen im DataGridView mit Werten befüllen. Welche Eigenschaft muss ich da nutzen. Etwa dieses Items? Ich weiß nicht genau, wonach ich suchen soll. Hintergrund ist der, dass ich in zuerst zeilenweise 3 von 5 Spalten der Tabelle mit Daten befüllen und danach erst die anderen Spalten mit Werten versehen möchte. Kann mir jemand einen Tipp geben? Vielen Dank im voraus und viele Grüße Kati82 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 25. März 2009 Autor Teilen Geschrieben 25. März 2009 Ich könnt mich echt mal wieder ... :old dataGridView[i,j]->Value = "Irgendwas"; Sorry Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 27. März 2009 Autor Teilen Geschrieben 27. März 2009 Hallo, ich hätte da mal noch ne Frage. Ich habe mir jetzt einen Thread erstellt, der meine GUI zyklisch aktualisiert. Bei Labels etc. funktioniert das auch ganz gut. Nur bei der Datagridview weiß ich nicht, wie ich das anstellen soll. Ich habe mir das ganze so vorgestellt, dass ich in einer anderen Klasse Listen mit Daten befülle. Diese Listen stellen dann die einzelnen Spalten der DatagridView dar. Das Problem ist nämlich, dass ich die View zum Teil nur zellenweise befüllen kann. Wie kriege ich aber nun heraus, wie weit ich eine Spalte der View bereits gefüllt habe? Hoffentlich habt ihr mein Problem verstanden. Gibts eventuell noch nen einfacheren Lösungsansatz? Danke schon mal im voraus. Viele Grüße Kati82 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 27. März 2009 Teilen Geschrieben 27. März 2009 die frage ist, ob das ständige aktualisieren überhaupt sinn macht. wenn ein user gerade daten bearbeitet, freut es ihn vermutlich nicht, dass seine änderungen verworfen werden. wieso refresht du das DGV nicht vollständig neu? die repräsentieren daten, die du vermutlich in einer DataTable (?) haben wirst, lassen sich so sicherlich auch einfacher vorhalten. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 27. März 2009 Autor Teilen Geschrieben 27. März 2009 Nee, den Anwender wirds nicht stören, der darf nämlich nix reinschreiben. Hintergrund ist der, das ich mit meinem Programm mit einem anderen Gerät kommuniziere. Vorerst ist es erstmal ein einfacher Ping. IM DGV sollen dann die Antwortzeiten je nach Paketgröße augelistet werden. Und wenn man nun mal ein paar 100 Pings schickt und ich erst zum Schluss das DGV refreshe, weiß ich nicht, ob das so günstig ist für den Anwender. Die Daten trage ich übrigens nicht in eine DataTable ein. Wäre das in meinem Fall ratsam? Gibts eventuell noch ne bessere Möglichkeit, die Ergebnisse darzustellen? Kati82 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 27. März 2009 Teilen Geschrieben 27. März 2009 Also ich hab das Problem nicht verstanden bzw. was genau passieren soll. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 27. März 2009 Autor Teilen Geschrieben 27. März 2009 Ich möchte mein GUI oder vielmehr mein DGV regelmäßg refreshen (so alle 2, 3 Sekunden), weil ich möchte, dass der Anwender immer mal ein paar aktuelle Daten vor Augen hat. Ich habe jetzt im Grunde 2 Klassen, ein für die Oberfläche und eine wo der ganze Sende-/ Empfangkram drin ist. Ich hab mir das jetzt so vorgestellt, dass ich die Daten, die ich in der zweiten Klasse alle bekomme, in eine Liste oder ähnliches reinschmeiße. Von dem Thread aus, von dem aus ich refreshe, rufe ich dann diese Listen ab. Ich glaub, die Herangehensweise ist überhaupt nicht optimalt. Liegt wohl daran, dass ich wenig mit DGV und so komplexen Datensätzen arbeite. Ich hoffe ich, ich hab es jetzt verständlicher ausdrücken können. Wenn nicht, bitte entschuldigt, es ist Freitag. Kati82 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 27. März 2009 Teilen Geschrieben 27. März 2009 Warum bindest du dein Grid nicht einfach an eine Datenquelle? Dann aktualisiert sich das Grid automatisch sobald sich die Daten in der Datenquelle ändern... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 30. März 2009 Autor Teilen Geschrieben 30. März 2009 Ich kenn mich jetzt damit nicht so aus. Habe es auch noch nie gemacht. Aber meinst du das so, dass ich als Datenquelle ein XML-Dokument oder ähnliches benutze und das dann bei Aktualisieren auslese? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 30. März 2009 Teilen Geschrieben 30. März 2009 Nein warum willst du die Daten auf die Festplatte schreiben nur um sie direkt wieder auszulesen? Leg dir eine DataTable an und nimm die als Datenquelle Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 30. März 2009 Autor Teilen Geschrieben 30. März 2009 Wie sage ich dem dgv, dass es die Datatable als Datenquelle nehmen soll? Einfach so? dgv->DataSource = DataTable; Compilieren lässt sich das zwar, aber der Designer von dem WindowsForm spinnt dann. Ist das richtig so? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 30. März 2009 Teilen Geschrieben 30. März 2009 du solltest schon ein DataSet an ein DGV binden, und nicht eine DataTable direkt poste doch mal, wie du die daten deines angegebenen "ping"-befehls zusammenstellst, falls du das überhaupt schon weisst. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 30. März 2009 Teilen Geschrieben 30. März 2009 Wenn man nur die eine Tabelle hat dann reicht auch die DataTable aus, das DataSet braucht man nur wenns mehrere Tabellen sind die da dran gebunden werden sollen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 30. März 2009 Autor Teilen Geschrieben 30. März 2009 Erst einmal noch ein Dankeschön für eure Unterstützung. Ich hab mir die Spalten der Tabelle in etwa so vorgestellt (ob ich die Ziel-IP mit reinnehme, weiß ich noch nicht, die ist ja eh immer gleich). Lfd. Nr.;Ziel-IP;Antwortzeit (100 Bytes);Antwortzeit (1000 Bytes);Antwortzeit (10000 Bytes) Ich soll nämlich einen bereits vorgefertigten Test machen, wo zunächst eine bestimmte Anzahl an Pings mit 100 Bytes, danach mit 1000 Bytes, und zum Schluss mit 10000 Bytes Paketgröße gesendet wird. Das würde also bedeuten, dass sich zuerst (mal abgesehen von den ersten beiden Spalten) die 3. Spalte füllt, dann die 4. und zum Schluß die 5. Falls jemand nen Vorschlag hat, wie ich es besser machen könnte, ich bin für alles offen. @Guybrush: Also ist das so richtig wie ich das mit der Datenquelle angegeben habe? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 30. März 2009 Autor Teilen Geschrieben 30. März 2009 Und wie füge ich einzelne Daten in eine DataTable ein? Will heißen, wir befülle ich genau eine Zelle der DataTable? Oder geht das nur beim DataSet? Mit nem normalen Index kann man ja da nicht arbeiten, oder? Google und MSDN haben mir bis jetzt noch nichts hilftreiches gezeigt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 30. März 2009 Teilen Geschrieben 30. März 2009 Wenn man nur die eine Tabelle hat dann reicht auch die DataTable aus, das DataSet braucht man nur wenns mehrere Tabellen sind die da dran gebunden werden sollen. war mir neu, danke Google und MSDN haben mir bis jetzt noch nichts hilftreiches gezeigt. da stehts ganz schon mit beispiel beschrieben: DataTable-Klasse (System.Data) s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 30. März 2009 Autor Teilen Geschrieben 30. März 2009 Ok, also ich habe jetzt folgendes: DataTable^ dtResults = gcnew DataTable(); DataColumn^ ColNr = gcnew DataColumn(); DataColumn^ ColIP = gcnew DataColumn(); DataColumn^ ColResp1 = gcnew DataColumn(); DataColumn^ ColResp2 = gcnew DataColumn(); DataColumn^ ColResp3 = gcnew DataColumn(); dtResults->Columns->Add(ColNr); dtResults->Columns->Add(ColIP); dtResults->Columns->Add(ColResp1); dtResults->Columns->Add(ColResp1); dtResults->Columns->Add(ColResp1); In der Methode, wo ich nach und nach die DataTable füllen möchte, habe ich noch das (zum Test mal nur eine Spalte füllen): DataRow^ row; for (int i = 0; i < 10; i++) { row = dtResults->NewRow(); dtResults->Rows->Add(row); dtResults->Rows[i][0] = Convert::ToString(i) + ". String"; } Die Datatable habe ich als Datenquelle für das dgv angegeben. In dem Thread, wo ich das dgv updaten möchte, habe ich einfach nur ein Refresh() für das dgv eingefügt. Das scheint aber nur teilweise zu funktionieren. Das Problem ist, dass nur die erste Zeile im dgv angezeigt und der Rest komplett unterschlagen wird. Und ich bin bisher noch nicht dahinter gestiegen, warum das so ist. Ich vermute, es liegt an der DataTable. Leider kann ich dem dgv nicht die Zeilen selber hinzufügen, z.B. wenn das Form lädt. Es kommt dann immer die Exception, dass Zeilen erst dann hinzugefügt werden können, wenn es auch Spalten gibt. Da die Spalten aber von der DataTable abhängig sind, weiß ich momentan nicht, wie ich den Fehler umgehen kann. Ich hoffe, ich finde den Fehler noch heraus. Viele Grüße Kati82 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 30. März 2009 Teilen Geschrieben 30. März 2009 Also das funktioniert bei mir ohne Probleme: DataTable dt = new DataTable(); public Form1() { InitializeComponent(); dt.Columns.Add(new DataColumn("col1",typeof(string))); dt.Columns.Add(new DataColumn("col2",typeof(string))); dataGridView1.DataSource = dt; } private void button1_Click(object sender, EventArgs e) { DataRow row; for (int i = 0; i < 10; ++i) { row = dt.NewRow(); dt.Rows.Add(row); row[0] = i.ToString(); row[1] = i.ToString("000"); } }[/PHP] Auf der Form befinden sich ein DataGridView und ein Button Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 31. März 2009 Autor Teilen Geschrieben 31. März 2009 So ähnlich hatte ich es ja auch. Es ging wohl deswegen nicht, weil ich mit unterschiedlichen Klassen gearbeitet habe. Und jetzt nachdem ich das etwas umstrukturiert habe, läuft es. Ich hatte gehofft, dass das Problem geklärt ist. Aber wenn man das eine Problem gelöst hat, taucht dafür ein Anderes wieder auf. Ich habe jetzt das Problem, dass keine Scrollbars angezeigt werden. Das ist ungünstig, wenn die Liste mal etwas länger wird. Gabs da nicht mal eine Eigenschaft, wo man sagen konnte, dass die Scrollbars immer angezeigt werden sollen? Wie hieß die nochmal? Oder muss ich mir jetzt selber einen Scollbar basteln? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 31. März 2009 Autor Teilen Geschrieben 31. März 2009 Ich hab noch was festgestellt. Bei meiner DataGridView habe ich die Anchor-Eigenschaft etwas verändert. Wenn ich jetzt das Programm laufen lasse und das und ich die Fenstergröße verändere nachdem die Liste gefüllt ist, dann erscheinen auf einmal die Scrollbalken. Was passiert also beim Ändern der Fenstergröße? Das kann doch auch nichts anderes sein als eine Art Refresh. Wenn ich das rauskriegen könnte, dann wäre mir schon geholfen. Habt ihr ne Idee? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 31. März 2009 Autor Teilen Geschrieben 31. März 2009 Ich habs. Das Zauberwort heißt "PerformLayout". Die Scrollbar verändert sich zwar nicht mit dem Wachsen der dgv, aber immerhin ist jetzt die Scrollbar erst mal da. Ist halt eben ein Schönheitsfehler. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 2. April 2009 Teilen Geschrieben 2. April 2009 Auch das kann ich nicht nachvollziehen. Bei obigem Code von mir aktualisiert sich beim Klicken auf den Button auch jedesmal die Scrollbar korrekt mit wenn neue Zeilen eingefügt werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.