05. august 2004 - 16:11Der er
12 kommentarer og 1 løsning
Dymanisk tilføjede knapper: Man skal klikke to gange?
I denne indkøbsliste skal man kunne slette en vare ved at trykke på "Slet"-knappen, men det virker kun hvis man trykker to gange? Hvordan får jeg det til at virke med ét tryk?
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.
Der er en forsinkelse på et roundtrip fordi page_load køres før din button-handler. du bliver nødt til at sørge for at genopbygge dit view når du har ændret i listen.
Egentlig kan du nok bare kalde genererliste i slutningen af din buttonhandler, men du skal nok lige sørge for at fjerne kontrollerne i panelet inden du smider dem ind igen.
"Page_load køres før button-handler"? Har det da noget at sige, i hvilken rækkefølge de står i koden?
Det er bevidst at jeg ikke bruger databinding og DataGrid - jeg kan ikke finde ud af at få det til at virke. Jeg har prøvet med at tilføje BoundCoulumn inde i Columns inde i DataGrid, men jeg får en fejl om at BoundColumn er en forkert type.
Som koden står nu - bygger du siden op fra page_load ved at kalde genererliste. generer liste abbonnerer så på et event fra en knap.
når brugeren så klikker på knappen - køres din page_load igen, handleren tilføjes, og det udledes at der er trykket på knappen hvorved btn_Click kaldes.
btn_Click sørger så for at fjerne et element i den liste du har brugt til at bygge siden op eften, men siden bliver ikke bygget på ny, og derfor ser du siden på skærmen som den så ud da den blev bygget udfra den gamle liste.
du vil som nævnt sikkert kunne få det til at at virke hvis du i handleren slutter af med at kalde genererliste igen.... men genererliste bliver så nødt til at rydde op inden den sætter ind ved f.eks. Panel1.Controls.Clear();
// når du nu har en sessionvariabel data protected ArrayList PageData { // returnerer nu null, hvis der ikke er noget - men du kunne have en defaultværdi her return (object)Session["Liste"] != null ? (ArrayList)Session["Liste"] : null; }
// du kan så i din aspx-kode have noget du kan databinde til... // et datagrid er supernemt at starte med <asp:DataGrid id="dg" runat="server"></asp:DataGrid>
// Og du kan så sørge for at fylder griddet med data fra din liste <asp:DataGrid id="dg" runat="server" DataSource="<%# Liste %>"></asp:DataGrid>
// hvis du bruger visual studio vil du så i din codebehind få : protected DataGrid dg;
// i page_load sørger du så for at udføre databindingen // desuden skal du så have tilknytte din handler som tidligere if(!IsPostBack) dg.DataBind(); // sørger for at
// og i din handler ændrer du så på listen f.eks. Liste.Add("Halløjsa der"); // og kalder efterfølgende dg.DataBind(); // Det vil så sørge for at opdatere listen, som du kommer til at se
Ikke helt, men jeg prøver at kigge på det - jeg har ihvertfald forstået arbejdsgangen i den kode jeg havde før, så jeg kan godt se, hvorfor det ikke virkede ordentligt.
Mht. DataGrid, så kan jeg sagtens finde ud af at databinde en simpel ArrayList, men jeg vil gerne have nogle Buttons for hver Item i listen - jeg har prøvet at omarbejde et eksempel fra min lærebog (Programming ASP.NET), hvor der i DataGrid tilføjes hyperlinkkolonnerm, til noget à la:
og så skulle du får mulighed for at klikke på mig en et eller andet felt, så det bliver markeret, og trykke accepter (eller noget i den stil).
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.