[b]index.aspx[/b] [code=asp] <%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="_Default" %> .: titjes :. | DataGrid - EditColumn





[b]index.aspx.cs[/b] [code=csharp] using System; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Text; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { //Variabelen declareren //Let op: je laadt een extra library in: System.Text (nodig voor StringBuilder) SqlConnection verbinding = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=H:\\C#\\DataGrid - EditColumn\\App_Data\\Database.mdf; Integrated Security=True; User Instance=True"); SqlCommand commando; //"ds" en "da", afkortingen van de DataSet en DataAdapter, lijkt me wel duidelijk DataSet ds; SqlDataAdapter da; string query, id, voornaam, achternaam; protected void Page_Load(object sender, EventArgs e) { //"!IsPostBack": als de pagina voor het eerst laadt, ga je naar "BindData()" //Deze functie staat onderaan in de code if (!IsPostBack) { BindData(); } } protected void wijzig_Click(object sender, DataGridCommandEventArgs e) { //Met dit stukje maak je de geselecteerde rij wijzigbaar //Daarna ga je ook terug naar de functie "BindData()" grid_een.EditItemIndex = e.Item.ItemIndex; BindData(); } protected void annuleer_Click(object sender, DataGridCommandEventArgs e) { //Als je op "Annuleer" klikt ga ja terug naar de DataGrid, door de rij niet wijzigbaar te maken //Daarna erug die functie grid_een.EditItemIndex = -1; BindData(); } protected void update_Click(object sender, DataGridCommandEventArgs e) { //Dit is een groot stuk code, namelijk als je WEL wilt wijzigen //Je haalt het id, voornaam en naam uit de geselecteerde rij fouten.Text = ""; id = e.Item.Cells[1].Text; voornaam = ((TextBox)e.Item.Cells[2].Controls[0]).Text; achternaam = ((TextBox)e.Item.Cells[3].Controls[0]).Text; voornaam = Server.HtmlEncode(voornaam); achternaam = Server.HtmlEncode(achternaam); //Controleren of de velden zijn ingevuld, anders foutmelding geven if (voornaam == string.Empty || achternaam == string.Empty) { fouten.Text = "Alle velden invullen"; } else { //Je stelt een nieuw SqlCommand in en koppelt deze aan je SqlConnection commando = new SqlCommand(); commando.Connection = verbinding; //Je declareert een StringBuilder en voegt hier je SQL-query in //De "@" dient om parameters toe te voegen aan de SQL-query StringBuilder sql_query = new StringBuilder(); sql_query.Append("UPDATE leden SET"); sql_query.Append(" voornaam=@voornaam"); sql_query.Append(", achternaam=@achternaam"); sql_query.Append(" WHERE id=@id"); //De "CommandText" (opdracht) van het SqlCommand instellen op je SQL-query commando.CommandText = sql_query.ToString(); //Hier ga je waards aan de parameters toekennen //Je voegt die parameters toe met het juiste kolom-type van in je DataBase commando.Parameters.Add("@voornaam", SqlDbType.VarChar, 50).Value = voornaam; commando.Parameters.Add("@achternaam", SqlDbType.VarChar, 50).Value = achternaam; commando.Parameters.Add("@id", SqlDbType.Int).Value = id; //Je opent een try-catch-finally blok try { //Verbinding openen en je SqlCommand uitvoeren verbinding.Open(); commando.ExecuteNonQuery(); } catch (Exception x) { //Als er een fout is, deze opvangen en in een labeltje weergeven fouten.Text = x.Message; } finally { //Uiteindelijk de verbinding terug sluiten //Dit moet in het finally-blok, want als er iets mis gaat en de //"verbinding.Close()" staat in het try-blok, wordt de verbinding niet gesloten verbinding.Close(); } //De geselecteerde rij terug normaal maken door ze terug niet-wijzigbaar te maken //Weer naar de functie gaan grid_een.EditItemIndex = -1; fouten.Text = "Gegevens succesvol gewijzigd"; BindData(); } } protected void BindData() { //Hier is dan eindelijk die functie //Je maakt een SQL-query en kent deze toe aan je SqlCommand, samen met je verbinding query = "SELECT id, voornaam, achternaam FROM leden"; commando = new SqlCommand(query, verbinding); //Je maakt een nieuwe instantie van je DataAdapter met het SqlCommand als "opdracht" da = new SqlDataAdapter(commando); //Je maakt een nieuwe instantie van je DataSet ds = new DataSet(); //Hier vul je je DataSet met wat de DataAdapter ophaalt da.Fill(ds); //Je stelt de DataSource van je DataGrid in op je DataSet (die nu vol gegevens zit) grid_een.DataSource = ds; //En je bindt je je gegevens aan de DataGrid grid_een.DataBind(); } }