Avatar billede qumle Nybegynder
30. april 2003 - 14:11 Der er 6 kommentarer og
1 løsning

Buttons og tables

hvis jeg opretter mine knapper dynamisk på baggrund af en liste af objekter, lægger dem ind i en tabel og reagerer på dem vha en EventHandler med et CommandArgument, hvordan kan jeg så finde ud af hvilken row i tabellen knappen befinder sig i?
kodeeksempel
Button TestButton = new Button();
  TestButton.Text = "Test";

  ArrayList list = new ArrayList();

  Flyt flyt1 = new Flyt("002135-5563", "Jesper", "jens", "privat");
  Flyt flyt2 = new Flyt("454666-5563", "Jes", "Peter", "virk");
  Flyt flyt3 = new Flyt("454666-5563", "Jes", "Peter", "virk");

  list.Add(flyt1);
  list.Add(flyt2);
  list.Add(flyt3);
  int i = 0;

  foreach (Flyt f in list) {

    TableRow r = new TableRow();

        Button but1 = new Button();
        but1.Text = "detaljer";//hvordan reagerer jeg når der bliver trykket på denne knap
        but1.Click += new System.EventHandler(DetaljerClicked);
        but1.CommandArgument = f.cpr;
        TableCell cell0 = new TableCell();
        cell0.Controls.Add(but1);
        r.Cells.Add(cell0);


        TableCell cell = new TableCell();
        cell.Text=f.cpr;

        DropDownList drop1 = new DropDownList();
        drop1.Items.Add(f.navn);
        drop1.Items.Add(f.læge);
        TableCell cell2 = new TableCell();
        cell2.Controls.Add(drop1);

  // r.Cells.Add(cell0);
    r.Cells.Add(cell);
    r.Cells.Add(cell2);
    Table1.Rows.Add(r);
  }



void DetaljerClicked(object sender, System.EventArgs e)
{
  string butarg=((Button) sender).CommandArgument.ToString();
//her vil jeg gerne vide hvor i tabellen knappen "sender" ligger
   
   
}
Avatar billede burningice Nybegynder
30. april 2003 - 20:03 #1
du skal vel have et tag på din knap, der fortæller hvilken rækker den befinder sig i.

but1.Tag = "din række";

void DetaljerClicked(object sender, System.EventArgs e)
{
  string butarg=((Button) sender).CommandArgument.ToString();
  string raekke = (string)((Button)sender).Tag;
}
Avatar billede qumle Nybegynder
02. maj 2003 - 11:04 #2
det kunne man nok også. men jeg løste problemet ved at undersøge hvilken celle knappen ligger i vha.
Cell.Controls.Contains(sender)
på samme måde kan man se hvilken række cellen ligger i
Avatar billede qumle Nybegynder
02. maj 2003 - 11:07 #3
altså sådan her

void godKnap(Object sender, EventArgs e) {
    Button source = (Button)sender;
    int index;
    foreach (TableRow row in DTJ_Table.Rows){
        foreach (TableCell cell in row.Cells){
            if (cell.Controls.Contains(source)){

                index = DTJ_Table.Rows.GetRowIndex(row);
                list.Remove(index);
            }
        }
    }
}
Avatar billede burningice Nybegynder
02. maj 2003 - 19:08 #4
qumle>> det er selvfælgelig også en mulighed... dog tager det jo noget mere processorkraft at køre den løkke igennem hver gang man trykker på en knap, end at aflæse en enkelt property ;)
Avatar billede qumle Nybegynder
08. maj 2003 - 13:27 #5
jo men Tag er da ikke en propperty i Button eller hvad?
Avatar billede burningice Nybegynder
12. maj 2003 - 01:53 #6
qumle>> det var lige godt sa... det har den da heller ikke. Jeg er vist lidt for vant til at arbejde med WinForms ;)
Avatar billede qumle Nybegynder
22. september 2003 - 10:04 #7
ok
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