Autor |
Beitrag |
avoid
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Fr 03.08.12 09:44
ich hab ein dataset mit einer tabelle und darin einige daten,
vereinzelte wurden auch wieder einige zeilen aus der tabelle gelöscht.
nun habe ich beim durch laufen der zeilen das problem,
das die gelöschten zeilen einen index fehler erzeugen.
auf die gelöschten zeilen kann ja nicht mehr zugegriffen werden.
ist eine abfrage wie diese dafür die richtige wahl?
C#-Quelltext 1: 2: 3: 4:
| if (dataSet1.Tables[0].Rows[e.RowIndex].RowState != DataRowState.Deleted) { } |
oder gibts dafür auch einen anderen weg?
denn so habe ich noch immer ein problem wenn auch ein anderes.
Zitat: | Diese Zeile wurde aus einer Tabelle entfernt und enthält keine Daten.
BeginEdit() ermöglicht das Erstellen von neuen Daten in dieser Zeile. |
offensichtlich fragt er den status nicht so ab wie ich es möchte.
_________________ Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
|
|
mats74
      
Beiträge: 189
Erhaltene Danke: 26
Win 10
VS 2017/19, C++, C#
|
Verfasst: Fr 03.08.12 11:24
Hallo avoid
avoid hat folgendes geschrieben : | ... auf die gelöschten zeilen kann ja nicht mehr zugegriffen werden.
|
Das ist richtig.
Wie sollen die dann einen Indexfehler erzeugen?
Warum willst Du gelöschte Zeilen (die nicht mehr vorhanden sind) nach irgendetwas abfragen wollen?
Für mich irgendwie nicht ganz nachvollziehbar  .
Vielleicht fehlt noch ein Bisschen Erklärung oder ich habe Deine Problematik nicht verstanden.
_________________ Gruss
mats74
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Fr 03.08.12 12:30
mir geht es darum, den lückenhaften index im dataset durch zu ackern, ohne ins loch (gelöschte zeile) zu fallen.
oder ist der index garnicht lückenhaft und der fehler kommt wo anders her?
er tritt nur sporadisch auf, meist wenn ich gerade mit der maus die größe vom Form ändere.
evtl. auch wenn gleichzeitig das datagridview mit refresh neu gezeichnet wird
und darum die zeilen neu eingefärbt werden müssen.
ich kann es leider selbst nicht genau eingrenzen.
_________________ Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
|
|
edmtop
Hält's aus hier
Beiträge: 6
WinXP, Win7, Win2K3, Win2K8, Linux
C++, c#, Java, Delphi7-Delphi XE2, PHP
|
Verfasst: Fr 03.08.12 12:56
hallo avoid,
ich weiss jetzt nicht genau was du da genau machst aber wenn es nur um einfärben der zeilen geht und ein dataset an das dataviewgrid gebunden ist, wäre vlt. besser wenn du das auf die Art im eventhandler verwendest.
C#-Quelltext 1: 2: 3: 4: 5:
| DataRow dr = DataGridView.Rows[e.RowIndex].DataBoundItem as DataRow; if (dr != null) { } |
|
|
mats74
      
Beiträge: 189
Erhaltene Danke: 26
Win 10
VS 2017/19, C++, C#
|
Verfasst: Fr 03.08.12 13:27
Zitat: | mir geht es darum, den lückenhaften index im dataset durch zu ackern, ohne ins loch (gelöschte zeile) zu fallen.
|
Einen "lückenhaften" Index in einer DataSetTable gibt es nicht. Wenn Du die Table mit einer Schleife durchläufst erhälst Du immer eine Fortlaufenden Indexwert. Eine "Lücke" kann nur dann entstehen, wenn Du während des Vorgangs den Tableinhalt veränderst und die Schleife auf einen "veralteten" Wert zugreift. Dann wäre aber Deine Prozessstruktur nicht gut durchdacht.
Wie sieht denn Dein Indexfehler aus?
_________________ Gruss
mats74
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Fr 03.08.12 13:39
Hallo avoid,
bezogen auf dein anderes Thema brauche hilfe beim nutzen von Multithreading bzw. TPL gehe ich mal davon aus, daß du ein typisches Multithreading-Problem erzeugt hast, d.h. daß du unsynchronisiert die DataTable in zwei Threads verarbeitest.
Bzgl. Multithreading kann ich dir den Artikel (bzw. PDF) unter [Artikel] Multi-Threaded Programmierung als Einstieg empfehlen.
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Fr 03.08.12 13:50
also wenn ich aus meinem dataGridView1_CellPainting diese zeile aus kommentiere
C#-Quelltext 1:
| if (dataSet1.Tables[0].Rows[e.RowIndex].RowState != DataRowState.Deleted) |
dann gekomme ich den fehler der im anhang ist.
den anderen fehler den ich zitiert habe, bekomme ich jetzt nicht mehr weil ich im CellPainting die zeile
C#-Quelltext 1:
| if (e.ColumnIndex >= 0 && e.RowIndex >= 0 && e.RowIndex < dataTable1.Rows.Count) |
in diese zeile geändert habe
C#-Quelltext 1:
| if (e.ColumnIndex >= 0 && e.ColumnIndex < dataTable1.Columns.Count && e.RowIndex >= 0 && e.RowIndex < dataTable1.Rows.Count) |
das war wohl der fehler.
nun schaffe ich es nicht mehr die fehler aus zu lösen.
danke Th69,
ich denke auch irgendwie das mir wohl der backgroundworker mitten im neu zeichnen schon wieder
am datatable rum löscht und added wie ein weltmeister, jetzt wo du es sagst.
Einloggen, um Attachments anzusehen!
_________________ Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
|
|
mats74
      
Beiträge: 189
Erhaltene Danke: 26
Win 10
VS 2017/19, C++, C#
|
Verfasst: Fr 03.08.12 14:16
_________________ Gruss
mats74
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Fr 03.08.12 15:41
na dann bin ich mal gespannt,
wann mein dataset so durcheinander ist das es ein eigenleben entwickelt.
naja so einfach wird es nicht sein, aber cool wenn doch.
_________________ Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
|
|
|