Avatar billede simsen Mester
22. november 2011 - 14:02 Der er 1 kommentar og
1 løsning

Winforms og DataGridView

Hej,

Hvordan får jeg fat i en valgt rækkes indhold? Og ikke mindst, hvordan får jeg det gjort sådan, at brugeren ikke kan redigere i felterne (og det er alle felter). Det jeg ønsker, er når en bruger klikker på en række skal der fremkomme en ny form med rækkens indhold i.

Det jeg har forsøgt:

private void grdCases_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            //label2.Text = grdCases.Item(0,tblBarang.CurrentRow.Index).Value
            int i;
            int j;
            i = e.RowIndex;
            j = e.ColumnIndex;

           
            if (grdCases.SelectedRows.Count > 0)
            {
                label2.Text = Convert.ToString(grdCases.SelectedRows[0].Cells[2].Value);
            }

        }

        private void grdCases_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int i;
            int j;
            i = e.RowIndex;
            j = e.ColumnIndex;


            if (grdCases.SelectedRows.Count > 0)
            {
                label2.Text = Convert.ToString(grdCases.SelectedRows[0].Cells[2].Value);
            }
        }

Hver gang kan jeg se, at den siger, der ikke er valgt nogen række - altså at SelectedRows.Count = 0.... Men det passer altså ikke jeg vælger række to og går ind i metoden :-)
Avatar billede simsen Mester
22. november 2011 - 14:24 #1
Jeg har fundet ud af den ene ting selv.....desværre ikke den, der er vigtigst...Nemlig ved at sætte ReadOnly = true på gridviewet kan man ikke editere.
Avatar billede simsen Mester
22. november 2011 - 14:47 #2
Jeg er jo helt ved at blive god.....det har kun taget 1 1/2 time at google mig frem til noget, jeg også kan bruge:

DataRowView currentDataRowView = (DataRowView)grdCases.CurrentRow.DataBoundItem;
            DataRow row = currentDataRowView.Row;
            label2.Text = row[0].ToString();

Det eneste (hvis andre skulle bruge den her) man skal være opmærksom på, at det er den indhentede datatable den søger på - altså hvis du i kolonne 1 har id og kolonne 2 navn og kolonne 3 har adresse men kun viser kolonne 1 og 3 i gridviewet, så vil

label2.Text = row[1].ToString();

give dig navn og ikke (som jeg troede) adressen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester