23. august 2004 - 09:13Der er
43 kommentarer og 1 løsning
Focus i datagrid?
Hej,
Er der nogen der har en ide til en kodestump - som gør at når man trykker "ret" (editcommand) i et datagrid - så skal den første textbox i den række man vil rette i have fokus.
Alternativt, bare få fat i clientID på textboxen - så kan det gøres via javascript.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
hvis du har en tekstboks som første kontrol i første celle kan du få fat i den med TextBox tb = (TextBox)e.Item.Cell[0].Controls[0]; og hente ids med tb.ClientId / tb.ID / tb.UniqueID
hvis du har givet dem id´selv... altså hvis du har skrevet en template i aspx-filen, kan du finde den med : TextBox tb = (TextBox)e.Item.FindControl(<kontrol id som skrevet i din template>);
er der en måde hvorpå jeg kan finde ud af præcis hvor textbox'en ligger. Den ligger i 13. celle - men nogle af cellerne er ikke visible. Men hvis jeg prøver med Cells[12].Controls[0] får jeg et invalid cast.
datagriddet bruger din edititemtemplate hvis edititemindex svare til det aktuelle rækkeindex, men det er så nødvendigt at rækken bliver skabt før du kan få fat i tekstboksen. men når man sætter et nyt EditItemIndex vil man vanligvis databinde efterfølgende... det er derfor du også kan bruge ItemDataBound. (jeg ville dog nok selv vælge ItemCreated).
Created først... Databinding er et system for sig, så jeg ville vælge created da det på en eller anden måde giver mere mening at man tilføjer noget noget til produktionen af en række, fremfor til databindingen. men jeg har også meget svært ved at få øje på et scenarie, hvor du ikke vil kunne gøre det i ItemDataBound :o)
ja... det har du nok ret i... Det har jo ikke nødvendigvis så meget at gøre med hvad der står i textfeltet... Men det ser ud til at virke.. Nu skal jeg bare have gjort så der er focus i textboxen når men retter... Det er fordi jeg har et problem med at den starter fra toppen af listen selv om man har scrollet ned og så valgt at rette en post "udenfor" det oprindelige skærmbillede.. Men tak for hjælpen... :-)
Lige et sidste spørgsmål... Så skal du nok få 15-20 ekstra points.. Kan man også finde id fra update "knappen". Er en linkbutton. Således at jeg kan lave en javascript der ved tryk på enter i denne textbox - udfører click() på gem? Lige nu når man trykker enter tager den nemlig som default første knap på siden - som tilfældigvis er logud... :-)
Den vil altid ligge som Controls[0] i den respektive celle. (du kan eventuelt kontrollere med den tekst du har sat på knappen) altså)
if(btnUpdate.Text == "<hvilken tekst du nu har valgt>") // ...
Jeg er ikke sikker på at der ikke eksisterer smartere måde at gøre det på, men jeg tror det ikke.
Jeg tror ikke du har mulighed for at sætte et id på knappen i din template, og hvis du skal tilskrive et id til knappen programmatisk skal du alligevel selv prøve at find den ved ovenstående.
Alternativt kan du jo gå bort fra "standardknap kolonnen", og lave din egen.
Nu kan det godt være det er mig der kegler rundt... Men jeg kan ikke få den til at typecaste til Linkbutton. Hvis jeg laver en tostring() på den celle jeg mener den er i .controls[0] så skriver den at det er en literalControl...
Er det fordi jeg tager fejl af cellerne - eller er det noget andet? Kan du gennemskue det?
hmm... så må det være fordi jeg er ved det forkerte index... Cells - den tæller alle rækker, også invisible, startende fra 0 - ikke? Jeg prøver at løbe igennem dem og se om jeg kan finde en linkbutton et sted... :-)
Hmm... så fik jeg fanget den... Nu er næste spørgsmål så... Hvordan får jeg klicket på den... Den er jo ikke en button - så jeg kan ikke "javascript" click() den.
Jeg kan kalde __doPostBack men der er clientId ikke det rigtige - det er med __ istedet for :_
Kan man hive den med :_ direkte ud, eller skal jeg bare lave en replace..
Jeg har et script - som fanger tastetryk. Når den nedtrykkede tast er enter - så går scriptet et eller andet. Normalt har jeg en alm. button således scriptet siger : btn.click(); Men det kan jeg ikke med LinkButton - da den clientside kun er en a href. Derfor simulerer jeg nu blot denne ved at lade mit script kalde __doPostBack('ctrl','');
Så virker det - ihvertfald i IE. Har lidt problemer med at få scripts til at virke i mozilla - men det er noget med noget javascript sikkerhed tror jeg...
ja... det virker som sagt fint på mac... Har du nogen ide til hvorfor mine javascripts ikke virker på Mac/ mozilla. Er det pga noget med hvordan form / form[] bliver brugt bare? Jeg synes ikke jeg får nogle scripts fejl på mozilla.
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.