[asp.net2] Datagrid uitlezen

Pagina: 1
Acties:

  • Supermario16
  • Registratie: Mei 2004
  • Laatst online: 20:46
Ik ben van plan via een datagrid een database aan te passen. Dit heeft betrekking tot een tabel genaamd "gebruikersAD".
Het weergeven hiervan gaat allemaal perfect, sortering en weergave is ook goed, alleen bij het wijzigen en updaten van de gegevens naar de database gaat het een en ander fout.

Ik ben uit gegaan van volgend tutorial:
http://www.microsoft.com/...sdn/aspnet/dbcolumns.aspx
En het probleem slaat op deze pagina:
http://www.microsoft.com/netherlands/msdn/aspnet/dbedit.aspx
En op dit stukje code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void DataGrid_Update(object sender, DataGridCommandEventArgs e) {
  string ProductName = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
  string UnitPrice = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
  //meer velden opvragen hier als de DataGrid meer velden bevat

  SqlConnection myConnection = new SqlConnection(ConnectionString);
  SqlCommand UpdateCommand = new SqlCommand();
  UpdateCommand.Connection = myConnection;
  UpdateCommand.CommandText = "UPDATE Products SET ProductName = @ProductName, UnitPrice = @UnitPrice WHERE ProductID=@ProductID";

  string keyValue = (string)DataGrid1.DataKeys[e.Item.ItemIndex];
  UpdateCommand.Parameters.Add("@ProductID", SqlDbType.Int).Value = keyValue;
  UpdateCommand.Parameters.Add("@ProductName", SqlDbType.VarChar, 40).Value = ProductName;
  UpdateCommand.Parameters.Add("@UnitPrice", SqlDbType.Money).Value = UnitPrice;

  try {
    myConnection.Open();
    UpdateCommand.ExecuteNonQuery();
  }
  catch (Exception ex) {
    Message.Text = ex.ToString();
  }
  finally {
    myConnection.Close();
  }

  DataGrid1.EditItemIndex = -1;
  BindGrid();
}


Het probleem:
:? Het uitlezen van de gegevens en deze in een variabele zetten

Het volgende stukje code binnen mijn asp.net c# app. moet de gegevens die gewijzigd worden uit het datagrid lezen en in variabelen zetten:
code:
1
2
3
4
5
6
7
8
// Gegevens uit tabel halen
        string Naam = ((TextBox)e.Item.Cells[3].Controls[0]).Text;
        string Gebruikersnaam = ((TextBox)e.Item.Cells[4].Controls[0]).Text;
        string Woonplaats = ((TextBox)e.Item.Cells[5].Controls[0]).Text;
        string provincie = ((TextBox)e.Item.Cells[6].Controls[0]).Text;
        string Telefoonnummer = ((TextBox)e.Item.Cells[7].Controls[0]).Text;
        string Email = ((TextBox)e.Item.Cells[8].Controls[0]).Text;
        string Admin = ((TextBox)e.Item.Cells[9].Controls[0]).Text;

(Cell 1 + 2 bevatten dus de knoppen EDIT en DELETE)

Nu zou ik zeggen (ook bekeken vanuit de voorbeelden uit ms tut.) dat dit moet kloppen en hij alle gegevens gewoon moet kopieren naar de strings. (correct me if i'm wrong)

Bij het debuggen geeft hij op de laatste regel van bovenstaande code de volgende fout:

ArgumentOutOfRangeException was unhandled by user code
-----------------------------------------------------------------------------------------------------------
Specified argument was out of the range of valid values.
Parameter name: index
-----------------------------------------------------------------------------------------------------------

Nu doet hij dit alleen bij het "Admin" item, de rest gaat allemaal wel goed. Ik snap er dus niks van dat hij op deze blijft hangen. Als ik "Admin" midden tussen de rest zet geeft hij dezelfde foutmelding.

Overige informatie:
Code over het verbinding maken met dbase:
code:
1
2
3
4
5
6
7
8
9
10
11
12
// Verbinding met database maken
        SqlConnection myConnection = new SqlConnection(sqldsGebruikers.ConnectionString);
        // Sql command maken
        SqlDataAdapter adptGebruikers = new SqlDataAdapter(CommandText, myConnection);

        // Dataset maken en vullen
        DataSet dsGebruikers = new DataSet();
        adptGebruikers.Fill(dsGebruikers);

        // Datagrid vullen en binden
        dgGebruikers.DataSource = dsGebruikers;
        dgGebruikers.DataBind();


Ik heb al verschillende dingen geprobeert:
* Internet gezocht naar foutmelding, veel resultaten, weinig nuttigs dat betrekking heeft op zelfde soort situatie.
* De "Admin" op een andere plaats in het rijtje neer gezet, om te kijken of het niet "toevallig" fout ging bij de laatste in het rijtje.
* "Admin" veranderd van varchar(50) naar int (het enige doel hiervan is aanduiden of gebruiker admin is) om te bekijken of het iets met de invoer van gegevens te maken heeft, dit had ook geen effect.

Ik ben nu al 2 dagen (tussen servicedesk werk door) aan het proberen maar krijg dit niet voor elkaar. Hopelijk hier iemand die er uit komt! :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:21
Je gaat blijkbaar buiten de bounds van een array.

En ik denk ook dat dat logisch is, want ik denk niet dat je er rekening mee houdt dat het eerste element niet op positie 1 maar op positie 0 zit.
Er is dus geen element op positie 9, maar je laatste zit op positie 8

https://fgheysels.github.io/


  • Supermario16
  • Registratie: Mei 2004
  • Laatst online: 20:46
En dan denk ik af en toe dat ik het ook echt snap 8)7
Het werkt iig, thx :)