[C#]Guid should contain 32 digits with 4 dashes.....

yellowspam

Erfahrenes Mitglied
Hi@all:

Tja ich habe mal wieder ein Problem, und zwar hab ich ein GridView welches Daten aus einem XML File ausließt.

Gut nun werden die Daten aus dem XML-File angezeigt und ich habe 2 optionen: Delete und Edit.
Das Problem ist nun dass ich sobald ich auf Delete klicke die folgende Fehlereldung erhalte:
Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

So und jetzt hab ich Mr. :google: gefragt aber alle Lösungen die ich gefunden habe passten nicht zu meinem Problem.
Das doofe ist ja dass es gestern noch funktioniert hat die Datensätze zu löschen.
So und nun meine Frage: Was ist falsch an dem Guid?

Habe Screenshots angehängt vom Fehler und dem Code.
 

Anhänge

  • screen1.jpg
    screen1.jpg
    28,8 KB · Aufrufe: 46
  • screen2.jpg
    screen2.jpg
    45,3 KB · Aufrufe: 47
  • screen3.jpg
    screen3.jpg
    54,2 KB · Aufrufe: 42
Zuerst mach die Screenshots das nächste mal bissel größer, dann brauchen wir keine Lupe zu :) Was mir erstmal einfallen würde, wäre dass du nen Breakpoint bei deiner If Abfrage machst. Und schau dir mal die Werte genau an, dann erkennst du da schon eventuell die Differenz warum der Fehler auftritt. Eventuell sieht es nur aus aus, aber bei dem ersten Screenshot sieht es so aus als ob zwei Bindestriche vor der 4 in dem Guid stehen, das würde die Fehlermeldung rechtfertigen.
 
Hi..erstmal danke für die schnelle Antwort, nun es ist genau ein Bindestrich vor der 4 es sieht nur so aus...anscheinend passt ihm am Guid selbst was nicht..habe aber schon vergllichen mit breakpoint, aber der Guid und die Variable ID haben die selbe Länge und passen auch sonst komplett zueinander.

Ich tippe mal drauf dass irgend ein kleiner Fehler beim erstellen des Guids schuld ist, abe rich hab null Ahnung was genau.
 
So hier ist der Screenshot von dem Fehler in größerer Ausgabe und der Source des Deleteevents:

C#:
void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {

            Guid ID = new Guid(this.GridView1.Rows[e.RowIndex].Cells[2].Text.ToString());

            DataSet ds = new DataSet();
            ds.ReadXml(Request.PhysicalApplicationPath + "xml\\urls.xml");

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                // wenn die id = der id des datasets ist, löschen wir den datensatz...
                if (new Guid(ds.Tables[0].Rows[i]["Name"].ToString()) == ID)
                {
                    ds.Tables[0].Rows[i].Delete();
                }

            }

            // schreibt ein neues xml...
            ds.WriteXml(Request.PhysicalApplicationPath + "xml\\urls.xml");

            BindGrid();

        }

Hoffe dass mein Problem jez klarer ist und ihr mir helfen könnt.
 

Anhänge

  • screen1.jpg
    screen1.jpg
    154,2 KB · Aufrufe: 35
Hat sich erledigt, habe folgenden Fehler gemacht:

C#:
if (new Guid(ds.Tables[0].Rows[i]["ID"].ToString()) == ID)
                {
                    ds.Tables[0].Rows[i].Delete();
                }

Habe bei Rows[i]["ID"] statt "ID", "Name" stehen gehabt... :rolleyes: daher konnte die Rows nicht mit der ID vergleichen.

Hoffe dass das jetzt anderen mit demselben Problem hilft.
 
Hättest du auf mich gehört hättest du den Fehler ganz schnell gefunden :D Ich hab ja oben in meinem Post geschrieben das du per Breakpoint/Debugger die übergebenen Werte anschauen sollst. :)
 
Habe die ganze Zeit nen Breakpoint gehabt..aber ich habe übersehen dass in den [] nach dem index i "Name" anstatt "ID" steht und dass ist mir nicht auifgefallen ^^ die werte des Guids waren eh ok. Trozdem danke.:)
 
Habe die ganze Zeit nen Breakpoint gehabt..aber ich habe übersehen dass in den [] nach dem index i "Name" anstatt "ID" steht und dass ist mir nicht auifgefallen ^^ die werte des Guids waren eh ok. Trozdem danke.:)

:offtopic:
Der Breakpoint allein hilft dir nichts. Du musst dann schon schritt für Schritt deinen Code durchlaufen und schauen, was in den einzelnen Variablen steht und an ansprechenden Stellen zurückgeliefert wird
 

Neue Beiträge

Zurück