DataGridView Column ID

Tags:    c#

hej

Er det muligt at give en række i et datagridview et id som man kan i en "DropDown" med "ValueMember" så man f.eks kan double klikke på en række i datagridet og så få idet ud til at hente noget nyt data med... og hvis det er, hvordan gør man så for jeg har prøvet alverdens ting men jeg kan ikke hente idet ud



9 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Hej Lasse, jeg sidder selv og kæmper med DataGridView, jeg er ikke helt sikker på, hvad det er du skal bruge, men hvis du bruger følgende kode:

label1.Text = dataGridView1.CurrentRow.Index.ToString();

..får du i hvert fald rækkenummeret ud på label1.

Det kan være du så kan hjælpe mig..., jeg har lavet en tabel, som jeg arbejder med i en List (Array) og viser
på skærmen i en dataGridView.

Nu kunne jeg godt tænke mig at udnytte samme dataGridView til at tilføje data til min List og til at redigere eksisterende data...., jeg kan bare ikke få det til at virke..., jeg har prøvet alt muligt og er begyndt at få
mistanke til, at det slet ikke kan lade sig gøre...???

Min List hedder KampListe, så for at tilføje en ny kamp, havde jeg tænkt mig noget i retning af :

KampListe.Add(new Kamp(dataGridView1.column...et eller andet, men jeg kan ikke finde noget der passer....:-(

og for at redigere i en eksisterende kamp, havde jeg tænkt noget i den her retning...:

KampListe.Insert(index, (dataGridView1.column....et eller andet.....)

Har du evt. en løsning på det problem...??

mvh. Helge



Hej Helge,

Jeg er ikke helt sikker på hvorfor du vil gøre det "manuelt" når det meste kan klares automagisk med en datasource til grid'en, men mon ikke du kunne gøre noget i denne stil for at "pumpe" data ind i en grid.

(Grid'en konstrueres manuelt så du nemmere kan se hvordan den er defineret - Du tegner den sikkert i IDE'en)

{
// Lav en grid med 4 kolonner og giv hver kolonne
// et navn der tydeligt afspejler hvilket skoleeksempel på
// analyse, design og funktionel datamodellering som jeg
// her lægger for dagen (hmmm... ;-))
dgv = new DataGridView(...
dgv.ColumnCount = 4;

// Kolonnerne navngives
dgv.Columns[0].Name = "Dato";
dgv.Columns[1].Name = "Modstander";
dgv.Columns[2].Name = "Vinder";
dgv.Columns[3].Name = "Resultat";

..
..

// Her opretter vi manuelt 3 kampe
string[] kamp0 = {"11/22/2006", "FCK", "AB", "2-1" };
string[] kamp1 = {"03/05/2006", "Herfølge", "OK", "1-1" };
string[] kamp2 = {"17/07/2006", "BIF", "OB", "3-4" };

// og stopper dem ind i grid'en ved håndkraft
DataGridViewRowCollection kampe = dgv.Rows;
kampe.Add(kamp0);
kampe.Add(kamp1);
kampe.Add(kamp2);

Var det sådan du mente ?








Indlæg senest redigeret d. 27.03.2006 23:49 af Bruger #9742
hej

Er det muligt at give en række i et datagridview et id som man kan i en "DropDown" med "ValueMember" så man f.eks kan double klikke på en række i datagridet og så få idet ud til at hente noget nyt data med... og hvis det er, hvordan gør man så for jeg har prøvet alverdens ting men jeg kan ikke hente idet ud

Jeg er ikke sikker, men kan man ikke bruge repeater... eller er det kun ASP.NET...



Hej,

Hvis man selv putter et (skjult) id i datagridviewet, kan det hentes igen i en-eller-anden "OnCellClick" metode

void CellKlik(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
DataGridViewCell nyCell = drinkGrid.Rows[drinkGrid.CurrentRow.Index].Cells[0];


// Den kan f.eks skrives ud
if(!String.IsNullOrEmpty(nyCell.FormattedValue.ToString()))
MessageBox.Show(nyCell.FormattedValue.ToString());
}

Er det blot for at lave et "een-til-mange" kompleks, er det nok nemmere at lave en relation i dit dataSet til de forskellige dataTables.





Hej,

Koden:

label1.Text = dataGridView1.CurrentRow.Index.ToString();

Vil ganske rigtigt give dig det øjeblikkelige rækkenummer, men rækkenummeret er jo desværre ikke det samme hver gang.
Den er måske lidt farlig at benytte.

Med venlig hilsen

Jørgen




Er det muligt at give en række i et datagridview et id som man kan i en "DropDown" med "ValueMember" så man f.eks kan double klikke på en række i datagridet og så få idet ud til at hente noget nyt data med... og hvis det er, hvordan gør man så for jeg har prøvet alverdens ting men jeg kan ikke hente idet ud


Hej igen, ja jeg var heller ikke helt sikker på, hvad Lasse var ude efter, men ud fra det han skriver, lyder det også som om han er ude efter den øjeblikkelige id..., altså han skal bruge id'et fra den aktuelle række til at hente noget andet med...

Jørgen, har du iøvrigt et bud på mit problem...???

mvh. Helge



Hej Jørgen, jeg kan godt se, at jeg ikke har beskrevet mit problem helt tydeligt...

Jeg har en database, jeg henter alle data fra den og stopper dem ind i en List

Fold kodeboks ind/udKode 


Fra List'en stopper jeg så data'ene ind i datagridview'en med:

Fold kodeboks ind/udKode 


Mit problem er, at nu vil jeg godt oprette nogle nye kampe eller redigere i eksisterende (indsætte målscoren) og dem vil jeg gerne have tilbage i min List (og så ind i databasen) Det er vigtigt, at de kommer ind i List'en først, så jeg kan arbejde med "mellemresultatet". Da DataGridView'en indeholder alle felterne, er det jo oplagt at rydde den og så bruge den til at indtaste data med, i stedet for at oprette en ny form til det...

mvh. Helge



Indlæg senest redigeret d. 22.04.2006 11:06 af Bruger #8737
mnøja..

Kan du så ikke fange grid'ens events for at opsnappe indtastninger. Vil det ikke virke forvirrende at rydde
grid'en for (mange) kampe for at indtaste een kamp ?

Herunder lidt løse fantasier...

{
dgv = new DataGridView(..
dgv.AllowUserToAddRows = True;
// Rutine der håndterer slut på indtastning
dgv.RowValidated += new .. funcA()
// Rutine der håndterer start på indtastning
dgv.DefaultValuesNeeded += new .. funcB()

..
funcA()
{ KampListe.Add(new Kamp(dgv.kol1Data, dgv.kol2Data, dgv.kol3Data

foreach (KampListe...)
{ Fyld grid med data hvis grid'en tømmes i funcB()
}
}

funcB()
{ // slet dgv.Rows så tom grid vises ??
// dgv.BeginEdit();

// Tildel første celle maxKampnummer++; måske ?
..
..
}




t