23. juli 2002 - 11:28Der er
14 kommentarer og 3 løsninger
DataGrid event - selectedRow
Spørgsmål 1: Hvordan fanger man, at brugeren klikker et row i et datagrid?
Min problemstilling er, at jeg gerne vil et datagrid med nogle oversiktsoplysninger for personer i hvert row, hvor det er mugligt, at klikke på et row og få præsenteret et nyt vindue med detailoplysninger.
*********** Spørgmål 2: Når man klikker på et row, er det kun den celle, der klikkes på, som får fokus. Er det ikke muligt, at det er hele rowet, der markeres istedet? (På samme måde, som hvis man klikker i venstre side af et et row på den lille sorte pil...)
Først spørgsmål 2: Jeg ved ikke helt om det er det du vil, men med følgende eksempel kan du i hvert fald style hele rækken f.eks. ved mouseover.
Du skal have fat i OnItemDataBound-eventen på datagridden: OnItemDataBound="Grid_OnItemDataBound"
som så kalder en funktion, der styler hele linjen: protected void Grid_OnItemDataBound(Object sender, DataGridItemEventArgs e) { // Get the newly created item ListItemType itemType = e.Item.ItemType;
Jeg skulle måske lige have tilføjet, at det er window forms. Sorry!
Jeg har lavet noget i asp.net, hvor jeg kunne bruge propertien .SelectedIndex på mit grid, men det lader ikke til findes når man bruger window forms... Det virkede umiddelbart mere enkelt end det du har skrevet oven over.
Noco22 -> Vi kom på sporet her! Jeg har lige kort lavet nedenstående kode. Der sker nu ikke så meget, for eventet reagerer ikke på det klik, der sker på de enkelte celler.
Pointen er, at selvom man klikker på en celle i et row, så er det hele rowet, der skal selectes og ikke kun cellen.
Nedenstående kode for eventet CurrentCellChanged minder meget om det jeg gerne vil have. Problemet er bare, at den celle, der bliver klikket på markeres med skygger og alt muligt. Desuden står markøren og blinker i cellen...
Jeg har en idé, men jeg kan ikke lige se, hvordan den skal føres ud i livet. Hvis man klikker på en celle, så må man vel kunne kalde en eller anden funktion, som tilsvarer et klik på RowHeader for samme kollonne. Hvis man brug DataGrid.HitTest, kan man finde ud af, om der er klikket på en celle eller, hvad der nu er klikket på.
Lige nu sidder jeg og rpøver med noget unfocus... Det er bare slet ikke til at finde noget :(
Det med at cellen stadig markeres drillede også mig, men løste det på følgende måde:
Tilføjede en DataGridTableStyle til min DataTable, oprettede mine columns, men de steder hvor jeg skulle bruge DataGridTextBoxColumn, brugte jeg min egen klasse MyDataGridTextBoxColumn, hvor jeg nedarver fra DataGridTextBoxColumn og overrider Edit-metoden:
this.HitTest(pt); skulle være --> ditDataGrid.HitTest(pt);
:-)
Synes godt om
Ny brugerNybegynder
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.