10. november 2003 - 15:38Der er
11 kommentarer og 1 løsning
Delete i DataGrid - Index was out of range.
Jeg får flg. fejl når jeg vil slette en row i mit datagrid:
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
Min kode:
// Delete row in DataGrid protected void dg_Delete(object sender, DataGridCommandEventArgs e) { try { if (!isEditing) { // the key value for this row is in the DataKeys collection string keyValue = (string)dg.DataKeys[e.Item.ItemIndex]; SqlString = "DELETE FROM mailinglists WHERE ID = @ID"; Response.Write(SqlString);
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Prøv at lave en Response.Write("Item clicked:" + e.Item.ItemIndex.ToString()); Så kan du verificere at du ikke forsøger at vælge et Index i dg.DataKeys der ikke eksisterer. Er det i det hele taget i denne linje at du får fejlen?
Prøv at udkommentér din try/catch. Så får du den præcise linje. Der er jo reelt to steder det kan gå galt: string keyValue = (string)dg.DataKeys[e.Item.ItemIndex]; eller objCommand.Parameters.Add("@ID", MySqlType.Int).Value = dg.DataKeys[(int)e.Item.ItemIndex];
...men det nok er den første. Tjek lige på samme måde om (dg.DataKeys.Count-1) < e.Item.ItemIndex ? Det er ihvertfald mit bedste bud på hvad fejlen er.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.