Ey, ik kwam net een programma tegen dit een grid had en elk vak was aanklikbaar. Is dit mogelijk in C# en zoja hoe dan precies. Hier een screenshot. Is niet heel duidelijk maar je ziet alleen het grid en misschien is het dan duidelijker wat ik bedoel
Ben je webbased of desktop bezig? Maar in principe is het mogelijk want er is een event dat wordt opgeroepen telkens je een andere cel aanklikt en dus bepaalde dingen kan uitvoeren.
Desktop, maar hoe kan ik dit maken. Want het lukt me niet .
Abbas - 28/02/2009 21:44 (laatste wijziging 28/02/2009 21:45)
Crew .NET
Ok, je maakt een projectje en daarin voeg je een 'New Item' toe: een server-side DB bijvoorbeeld. Je maakt een tabel 'tblLeden' en hier zet je dan wat gegevens in. Daarna maak je een DataSource voor je project en dan open je het kader 'Data Sources'. De DataSource die je net hebt gemaakt sleep je naar je Form, klik dan 1 keer op de DataGridView en ga naar de Event-properties. Hier ga je naar het event CellClick en typ in dat vakje celGeklikt of iets dergelijks. Je gaat naar de code en plaats deze regel in dat event:
Een datagridview moet niet persé aan een datasource gekoppeld zijn. Je kan manueel rijen en kolommen toevoegen. Je kan de rij en kolomhoogtes aanpassen dus perfect een veld van 10x10 genereren.
Oke, maar ook zoals in de screenshot want wat ik tot nu toe had geprobeerd dan kreeg je een extra kolom aan de linkerkant met sterretjes en pijltjes enzo. Ik doe het nu met 100 buttons, is er een makkelijkere manier?
dgview1.Columns.Add("", "", "", "", "", "", "", "", "", "")
For Each col As DataGridViewColumn In dgview1.Columns
col.Width = 20
Next
For i As Integer = 0 To 9
dgview1.Rows.Add("", "", "", "", "", "", "", "", "", "")
Next
For Each row As DataGridViewRow In dgview1.Rows
row.Height = 20
Next
Oke bedankt voor je hulp, maar er moet een makkelijkere manier zijn ipv 2x for en 2x foreach. In het weekend had Titjes me geholpen met 100 buttons genereren.
Maar zal thuis even kijken hoe ik het daar heb want daar is het geloof ik iets makkelijker maar weet niet zeker.
Hoe kan ik trouwens een eventhandler op elke cell krijgen? Want ik wil weten welk cell is aangeklikt, dus de naam van de aangeklikte cell.
Oke bedankt, maar heb nu nog 2 problemen.
Het aantal kolommen is nu niet dynamisch, maar als ik nog een for binnen de for doe dan lukt het niet omdat hij dan steeds dvg.Rows.Add opnieuw doet en hij moet gewoon een parameter toevoegen
En het 2de probleem is dat er steeds een extra row komt, zie afbeelding . http://img141.i...idview.jpg
Mijn for loopt tot en met 10, maar hij doet er dus 1 extra zoals je ziet, en als ik dan tot 10 doe krijg ik er alsnog 1 extra, kan ik dit uitzetten ofzo?
Een DataGridView doet dit automatisch, probeer eens 9 keer te loopen in plaats van 10.
Voor je dynamische kolommen, gebruik de loop met de getallen die Ontani je gaf (97-107, of verder). Daarna ga je zien hoeveel kolommen er zijn. Dat aantal gebruik je dan om te zien hoeveel parameters je moet meegeven mij die Rows.Add() en ook hoeveel Rows het moeten zijn.
Maar als ik maar 9x loop dan krijg ik alleen de getallen 1 t/m 9 en dan een lege rij. Ik moet dus 1 t/m 10 en geen lege rij. Zal even kijken voor de kolommen
Abbas - 05/03/2009 15:29 (laatste wijziging 05/03/2009 15:29)
Crew .NET
Heb het al gevonden voor die laatste rij. Je moet gewoon naar je Properties gaan van je DataGridView en daar zet je 'AllowUserToAddRow' op False.
//Array met kolomletters
string[] columns = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" };
//Array voor de waarden per rij
string[] values;
//Lengte van de kolomArray
int numberOfColumns = columns.Length;
//Kolommen toevoegen door middel van loop
foreach (string column in columns)
dgv.Columns.Add(column, "Kolom " + column);
//Rijen toevoegen door middel van loop
for(int i = 1; i <= numberOfColumns; i++)
{
//Nieuwe instantie met als aantal eentje meer dan aantal kolommen
values = new string[numberOfColumns+1];
//Eerste waarde is gewoon het getal
values[0] = i.ToString();
//Loopen door alle letters om toe te voegen aan de array
for(int j = 65; j < (numberOfColumns + 65); j++)
values[j-64] = ((char)j).ToString() + i.ToString();
//Array met waardes aan een nieuwe rij toevoegen
//en aan de GridView toevoegen
dgv.Rows.Add(values);
}