05. juli 2005 - 09:51Der er
13 kommentarer og 1 løsning
Indsætte en knap i en control.
Hej eksperter.
Jeg har en side der loader en control der ser sådan ud: <asp:DataGrid id="dgYear" Runat="server" AllowSorting="True" ShowFooter="True" Cellpadding="0" GridLines="None" Width="100%" AutoGenerateColumns="False"> <AlternatingItemStyle CssClass="Datagrid2"></AlternatingItemStyle> <ItemStyle CssClass="Datagrid1"></ItemStyle> <HeaderStyle CssClass="Overskrift3"></HeaderStyle> <FooterStyle CssClass="Overskrift3"></FooterStyle> </asp:DataGrid> <asp:Label ID="lblTest" Runat="server" Visible="False" Font-Size="8pt"></asp:Label> <div class="ExcelKnap" align=right><asp:Button ID="btnToExcel" Runat="server" Text="Til Excel"></asp:Button></div>
Som i kan se har jeg forsøgte at indsætte en knap i bunden og forsøger at fange det event der sker når jeg trykker på den. Men der sker ingenting? Så vidt jeg kan se i codebehind filen har jeg skrevet eventet rigtigt.
Men er det fordi knappen ikke står i en form? og kan man overhovedet gøre ovenstående
mmm... hvad mener du med at du aldrig har gjort det på en kontrol? - er det en UserControl du har lavet eller? (ikke at det skulle gøre nogen forskel).
bortset fra det - så gør koden ikke noget... hvordan konstaterer du at du ikke får kaldt handleren?
umiddelbart ser der ikke ud til at være noget i vejen med din kode.... sætter du kontrollen ind i et event fra din form, eller er den statisk angivet i html'en? mvh
Ja undskylde.. det er selvfølgelig en web user control. Måske jeg skal uddybe lidt:
Jeg har en side "rapport.aspx" som loader en usercontrol "aarsoversigt.ascx." Usercontrollen opbygger et dataset som jeg skal have exporteret til Excel.
Har derfor lavet en knap på aarsoversigt.ascx som det kan ses på koden jeg har vedlagt, men der sker ikke noget når jeg klikker på knappen. Måden jeg kan se der ikke sker noget, er fordi jeg har sat et breakpoint på : private void btnToExcel_Click(object sender, System.EventArgs e)
Men funktionen bliver aldrig kaldt.
Min tanke var, at der jo ikke er nogen "form" tag på aarsoversigt.ascx fordi den bliver loadet fra aspx siden, og det måske kunne have noget med det at gøre
private void bindAarsOversigt(string userEmail) { ctrlAarsOversigt ctrl = (ctrlAarsOversigt)LoadControl("Controls/ctrlAarsOversigt.ascx"); ctrl.year = Convert.ToInt32(ddYear.SelectedItem.Value); ctrl.user = userEmail; placeYear.Controls.Add(ctrl); } Det skal måske lige siges at usercontrollen har virket længe, det er bare en tilføjelse af funktionalitet at jeg skal kunne eksportere til excel
kan vise den kode der kalder bindAarsOversigt? - og fik du sat noget kode ind i handleren ?
(som udgangspunkt vil du ikke kunne stoppe på selve funktionsdeklarationen, men vs burde selv flytte dit breakpoint til den afsluttende } - eller til første statement, hvis der er et sådant).
(det har ikke noget at gøre med at du ikke har et form-tag i din usercontrol... det er helt som det skal være, og du vil få en fejl hvis du sætter en serverside form ind i user-kontrollen) mvh
Jeg prøvede at indsætte this.Page.Response.Write("blah") i handleren, men det blev ikke skrevet på siden.
Jeg har prøvet det med at indsætte en serverside form i controllen og den fejlede ganske rigtigt. Prøvede så at oprette en knap på den aspx side der loader controllen og så kan jeg godt få eventet til reagere. Men på aspx siden har jeg ikke det dataset til rådighed jeg skal bruge.
Her er koden der kalder bindAarsOversigt: private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here if(!Page.IsPostBack) { bindDDMonths(); bindDdYears(); bindDdPerson(); if(uc.getTimaxNiveau() == 4) { ddPerson.Visible = true; } else { ddPerson.Visible = false; } bindMaaneder(uc.GetCurrentUserEmail()); bindAarsOversigt(uc.GetCurrentUserEmail());
du sætter jo så kun kontrollen ind, når brugeren ser siden første gang - så den indsættes ikke når du trykker på knappen, og derfor vil du heller ikke få kaldt din handler. mvh
AHH!! Mange tak.. det var det der var problemet.. Har sat bindMaaneder(uc.GetCurrentUserEmail()); bindAarsOversigt(uc.GetCurrentUserEmail()); udenfor if løkken der tjekker for postback. Smid lige et svar og du får dine velfortjente points
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.