14. juli 2004 - 15:26Der er
17 kommentarer og 1 løsning
Værdi af TextBox i Datagrid (TemplateColumn) C#
Jeg har et datagrid med en TemplateColumn hvori der er en Text box. I hver row er der en varelinie. Det er nu meningen at brugeren skal kunne indtaste et antal i textboxen ud for de ønskede varelinier. Når det er gjort skal bruger en trykke på en OK Button uden for datagridet for at gemme.(Der skal altså ikke udføres postback før der trykkes OK)
Hvordan henter jeg værdien af textbox'ene i min TemplateColumn i CodeBehind ?
Uha .. jeg skal lige ha min hjerne til at følge med..... Jeg vil gerne ha at textbox'ene bliver gennemløbet når jeg klikker på min ok Button som er uden for datagridet skal jeg så kalde orderRelease fra min ok_click(object sender, EventArgs e)
Du skal regne med at jeg er lidt af en spasser til asp.net :-)
Idéen er, at når du klikker på knappen (i ButtonColumn), så kalder den værdien i OnItemCommand (som er defineret i Datagrid'et). Denne værdi er navnet på event'en, som da kaldes (altså "order"). I denne gennemløber den så det Item du har valgt (altså den række du har trykket på knappen ud for) og finder så tallet og laver det om til en integer.
ja det kunne man selvfølgelig også gøre .... men jeg havde tænkt mig at man skulle udfylde de en textbox ud for hver af de varer man ønsker og derefter klikker man på en helt almindelig ok knap uden for datagridet der samler informationer fra datagrided ind og sender dem videre til indkøbskurven
Jaeh, OK. Jeg frygtede lidt at det var det du ville lave :) (da jeg også selv er i de indledende runder af at lære ASP.NET)
Hmm, jeg kan ikke helt se hvordan du skal klare den på stående fod (selv om jeg er sikker på at det nok skal kunne lade sig gøre). Med mindre det er noget i retning af:
foreach( DataGridItem in products.Items ) { int antal = Convert.ToInt32( ( (TextBox)e.Item.FindControl( "amount" ) ).Text ); // her gør du hvad du skal med værdien i "antal" }
Jeg er lidt online i dag, hvis du skal afprøve skidtet. For at være helt ærlig, er jeg faktisk lidt nysgerrig for at se om det virker, da jeg godt kunne finde på selv at bruge det på et senere tidspunkt.
Nå jeg har desværre ikke haft tid til at kigge på din løsning før nu. Chefen havde andre planer for min tid :-( Nå men jeg har afprøvet foreach sætningen men får denne fejlmeddelelse : 'object' does not contain a definition for 'FindControl'
Nå nu virker det squ. Løsningen var at fjerne Item fra ((TextBox)e.Item.FindControl("amount" ) ).Text );
Altså foreach(DataGridItem dgi in tonerDG.Items ) { int antal = Convert.ToInt32(((TextBox)dgi.FindControl("antalDGTB")).Text); } 100 bananer på vej til avlund..... Tak for hjælpen
Ja, selvfølgelig er det ikke på Item du bruger FindControl... my bad.
Tak for points, glad for at du fik det til at spille. I øvrigt fedt med den artikel til ekstra info!!
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.