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:
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:
(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:
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!
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 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!