|
Categorieën >
Csharp.NET
Kan datatable/datagridview niet aanpassen buiten eigen klasse (Opgelost)
colaboer4 – 27/12/2011 14:08 (Laatst gewijzigd op 18/01/2012 23:08)
|
|
offline
|
Lid
|
Beste Allen,
Ik ben bezig met een applicatie die zijn gegevens opslaat in een Access database. Dit werkt allemaal prima, echter loop ik tegen wat problemen aan. Ik heb een database klasse geschreven, hiermee haal ik de gegevens op en stop ze in een datatabel. Deze datatabel is gekoppeld aan een datagridview.
In dezelfde klasse als de datagridview heb ik een refresh methode geschreven. Deze haalt simpel weg alle data opnieuw op, en maakt opnieuw de koppeling naar de tabel en de datagridview. Als ik deze methode aanroep binnen deze klasse werkt dit perfect, maar als ik de methode in een andere klasse aanroep doet hij niks.
Heeft iemand enig idee waar dit aan kan liggen, want ik kan er niet achterkomen.
Hieronder de relevante code:
refresh methode // w_Studenten.cs
public void studentRefresh()
{
//Methode aanroepen voor het ophalen van gegevens
DataSet query = academieDB.getDataSet("SELECT * FROM student ORDER BY achternaam ASC", "student");
//Dataset aan Datatabel koppelen
t = query.Tables["student"];
//Datatabel aan datagrid koppelen
dgv_Studenten.DataSource = t;
}
public void studentRefresh() { //Methode aanroepen voor het ophalen van gegevens DataSet query = academieDB.getDataSet("SELECT * FROM student ORDER BY achternaam ASC", "student"); //Dataset aan Datatabel koppelen t = query.Tables["student"]; //Datatabel aan datagrid koppelen dgv_Studenten.DataSource = t; }
Na het drukken op een knop op een ander scherm wordt de onderstaande code uitgevoerd.
w_StudentBewerken.cs
//Methode aanroepen voor het ophalen van gegevens
DataSet query = academieDB.getDataSet("UPDATE student SET ACHTERNAAM = '" + tb_achternaam.Text + "' , ROEPNAAM = '" + tb_roepnaam.Text + "', VOORVOEGSEL = '" + tb_voorvoegsel.Text + "', VOORLETTERS = '" + tb_voorletters.Text + "', STRAAT = '" + tb_straat.Text + "', PLAATS = '" + tb_woonplaats.Text + "', POSTCODE = '" + mst_postcode.Text + "', EMAIL = '" + tb_emailAdres.Text + "', GEB_DATUM = '" + mst_geboorteDatum.Text + "', OPLEIDING = '" + tb_opleiding.Text + "', INSTROOM = '" + instroomUpdate + "', VTDT = '" + VTDT + "' WHERE idcode = '" + tb_studentNummer.Text + "'", "studentUpdate");
//Dataset aan Datatabel koppelen
t = query.Tables["studentUpdate"];
//Datatabel aan datagrid koppelen
studentInfo.dgv_Studenten.DataSource = t;
//Datagridview refreshen
studentInfo.studentRefresh();
//Scherm sluiten
this.Close();
//Methode aanroepen voor het ophalen van gegevens DataSet query = academieDB.getDataSet("UPDATE student SET ACHTERNAAM = '" + tb_achternaam.Text + "' , ROEPNAAM = '" + tb_roepnaam.Text + "', VOORVOEGSEL = '" + tb_voorvoegsel.Text + "', VOORLETTERS = '" + tb_voorletters.Text + "', STRAAT = '" + tb_straat.Text + "', PLAATS = '" + tb_woonplaats.Text + "', POSTCODE = '" + mst_postcode.Text + "', EMAIL = '" + tb_emailAdres.Text + "', GEB_DATUM = '" + mst_geboorteDatum.Text + "', OPLEIDING = '" + tb_opleiding.Text + "', INSTROOM = '" + instroomUpdate + "', VTDT = '" + VTDT + "' WHERE idcode = '" + tb_studentNummer.Text + "'", "studentUpdate"); //Dataset aan Datatabel koppelen t = query.Tables["studentUpdate"]; //Datatabel aan datagrid koppelen studentInfo.dgv_Studenten.DataSource = t; //Datagridview refreshen studentInfo.studentRefresh(); //Scherm sluiten this.Close();
Alles in bovenstaande codes werkt perfect, behalve de "studentInfo.studentRefresh();". Hij geeft geen erorr dus ik heb ook geen flauw idee waarom hij hem niet pakt.
Bijvoorbaat dank.
"""""""""
Het probleem is opgelost. De methode werkte wel, maar hij kon de datgridview niet aanspreken. Om dit op te lossen heb ik gebruik gemaakt van parent en child. Nu werkt het wel.
""""""""" |
2 antwoorden
|
|
|
offline
|
PHP expert
|
Beetje lastig, dit is typisch zo'n gevalletje waarbij je je helemaal kapot debugt terwijl het een klein foutje is.
Hoe heeft w_StudentBewerken.cs kennis van studentInfo (die - wat ik aanneem - uit w_Studenten.cs komt)? Ik heb zo'n vermoeden dat t na het sluiten wordt weggeknikkerd. Misschien even anders aanpakken en eerst je hele datagrid clearen (kijken of dat lukt) en weer vullen. Misschien dat het beetje readonly is?
|
colaboer4 – 30/12/2011 16:52 (Laatst gewijzigd op 13/01/2012 16:41)
|
|
offline
|
Lid
|
Bovenin de w_Studentbewerken.cs roep ik een aantal klasses aan waaronder w_Studenten.cs.
public partial class w_StudentBewerken : Form
{
w_Studenten studentInfo = new w_Studenten();
public partial class w_StudentBewerken : Form { w_Studenten studentInfo = new w_Studenten ();
Aangezien ik niets hieronder meer bij kan posten??? Maar even zo. Ik heb verder geprutst, en het ligt aan het koppelen van de dataTabel aan de datagridview. Dit wil hij niet doen, maar waarom niet weet ik niet... Iemand toevallig iedeen?
Dus in dat opzicht zou hij volgens mij moeten werken, alhoewel het probleem wel hier ergens zou moeten liggen, de methode werkt wel in w_Studenten.cs. Alleen niet als ik deze methode aanroep in w_StudentBewerken.cs
|
Je moet ingelogd zijn om een reactie te kunnen posten.
|
|
|