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
//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();
}
}