Autor Beitrag
avoid
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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)
BeitragVerfasst: 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?
ausblenden C#-Quelltext
1:
2:
3:
4:
if (dataSet1.Tables[0].Rows[e.RowIndex].RowState != DataRowState.Deleted)
{
  // dann tu was du nicht lassen kannst
}


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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Fr 03.08.12 11:24 
Hallo avoid

user profile iconavoid hat folgendes geschrieben Zum zitierten Posting springen:
... 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 :gruebel:.
Vielleicht fehlt noch ein Bisschen Erklärung oder ich habe Deine Problematik nicht verstanden.

_________________
Gruss
mats74
avoid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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)
BeitragVerfasst: 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
BeitragVerfasst: 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.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
DataRow dr = DataGridView.Rows[e.RowIndex].DataBoundItem as DataRow;
if (dr != null)
{
  //tu was
}
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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)
BeitragVerfasst: Fr 03.08.12 13:50 
also wenn ich aus meinem dataGridView1_CellPainting diese zeile aus kommentiere
ausblenden 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
ausblenden C#-Quelltext
1:
if (e.ColumnIndex >= 0 && e.RowIndex >= 0 && e.RowIndex < dataTable1.Rows.Count)					

in diese zeile geändert habe
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Fr 03.08.12 14:16 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
... daß du ein typisches Multithreading-Problem erzeugt hast, d.h. daß du unsynchronisiert die DataTable in zwei Threads verarbeitest.

Da kann ich mich nur anschliessen. Da musst Du deine Prozesse zeitlich aufeinander abstimmen, ansonsten erhälst Du in deinem DataSet ein ungewolltes Chaos :wink:

_________________
Gruss
mats74
avoid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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)
BeitragVerfasst: 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