29. juli 2004 - 20:11
Der er
47 kommentarer og 1 løsning
Referere til en Textbox der befinder sig i en Repeater
Jeg har en asp:repeater der hedder ContactRepeater, deri en række textbox'e... Jeg har så en funktion der blot skal udskrive værdien fra textboxen "input_contact_name", men hvordan får jeg den til at finde den textbox... Jeg har forsøgt med følgende: public void doSendMail(Object O, System.EventArgs e) { Response.Write(((TextBox)(ContactRepeater.Controls[0].FindControl("input_contact_name"))).Text); } eller : public void doSendMail(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e) { TextBox l; l = (TextBox) e.Item.FindControl("input_contact_name"); if(!(l == null) ){ Response.Write(l.Text); } } Men jeg kan sku ikke få det til at virke ? Nogen der har et forslag ? /Jokke
Annonceindlæg fra Lenovo
Sidder din knap i dit repeateritem ?
Hvis du opbygger repeateren ved hjælp af en template i aspx-koden, kan du så ikke sende dit itemtemplate, så vi kan se den ?
jo jeg har det i min item template... her kommer koden :
http://83.88.228.37/aspx.txt <- brug gem som eller vis kilde på siden... valgte lige ikke at copy paste den herind, da den er proppet med tab tast..
Men jeg har mange repeaters på min default.aspx, jeg har én for hver side, som jeg så databinder med et xml dokument...
Ok.... hvor har du din knap ´?
Arjjj fuck, nu har jeg slettet det hele... giv mig lige 10 minutter..
sån... Prøv at hente filen igen... jeg har smidt det lille stykke cs med...
nej den kan ikke tage de webcontrols.... vent..
<asp:Repeater id="ContactRepeater" runat="server"> <itemtemplate> <table border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td width="450"> <table cellspacing="0" cellpadding="0" width="95%"> <tr> <td colspan="2"> <span class="OverskriftStor"> <%#DataBinder.Eval(Container.DataItem, "text1") %> </span> </td> </tr> <tr> <td colspan="2"> <div class="tekstNormal"><%#DataBinder.Eval(Container.DataItem, "text2") %></div> </td> </tr> <tr> <td colspan="2"> <br> </td> </tr> <tr> <td> <div class="tekstNormal"><%#DataBinder.Eval(Container.DataItem, "text3") %></div> </td> <td> <asp:TextBox ID="input_company" Runat="server" CssClass="aspTextBoxLeft" Width="200"></asp:TextBox> </td> </tr> <tr> <td> <div class="tekstNormal"><%#DataBinder.Eval(Container.DataItem, "text4") %></div> </td> <td> <asp:TextBox ID="input_contact_name" Runat="server" CssClass="aspTextBoxLeft" Width="200"></asp:TextBox> </td> </tr> <tr> <td> <div class="tekstNormal"><%#DataBinder.Eval(Container.DataItem, "text5") %> </div> </td> <td> <asp:TextBox ID="input_address" Runat="server" CssClass="aspTextBoxLeft" Rows="3" TextMode="MultiLine" Width="200"></asp:TextBox> </td> </tr> <tr> <td> <div class="tekstNormal"><%#DataBinder.Eval(Container.DataItem, "text6") %></div> </td> <td> <asp:TextBox ID="input_phone" Runat="server" CssClass="aspTextBoxLeft" Width="200"></asp:TextBox> </td> </tr> <tr> <td> <div class="tekstNormal"><%#DataBinder.Eval(Container.DataItem, "text7") %></div> </td> <td> <asp:TextBox ID="input_email" Runat="server" CssClass="aspTextBoxLeft" Width="200"></asp:TextBox> </td> </tr> <tr> <td> <div class="tekstNormal"><%#DataBinder.Eval(Container.DataItem, "text8") %></div> </td> <td> <asp:TextBox ID="input_URL" Runat="server" CssClass="aspTextBoxLeft" Width="200"></asp:TextBox> </td> </tr> <tr> <td> <div class="tekstNormal"><%#DataBinder.Eval(Container.DataItem, "text9") %></div> </td> <td> <asp:TextBox ID="input_comment" Runat="server" CssClass="aspTextBoxLeft" Rows="5" TextMode="MultiLine" Width="200"></asp:TextBox> </td> </tr> <tr> <td> </td> <td> <asp:Button runat="server" ID="input_button" Text="Send" OnClick="doSendMail"></asp:Button> </td> </tr> </table> </td> <td width="240" valign="top"> <table border="0" cellspacing="0" cellpadding="0" id="leftbox"> <tr> <td> <div class="overskriftlille"><%#DataBinder.Eval(Container.DataItem, "text10") %></div> <div class="tekstlille"><%#DataBinder.Eval(Container.DataItem, "text11") %></div> </td> </tr> <tr> <td> </td> </tr> </table> </td> </tr> </table> </itemtemplate> </asp:Repeater>
30. juli 2004 - 00:07
#10
30. juli 2004 - 00:07
#11
Ok... jeg kan ikke se nogen tekstbokse i din itemtemplate.
30. juli 2004 - 00:10
#12
hov - så dukkede der en tekstboks op. synes ikke jeg kunne finde nogen før.. sorry
30. juli 2004 - 00:10
#13
nej kig i det jeg copy pastede... der er et par stykker.. <asp:TextBox ID="input_company" Runat="server" CssClass="aspTextBoxLeft" Width="200"></asp:TextBox>
30. juli 2004 - 00:11
#14
hehe ok :)
30. juli 2004 - 00:13
#15
Jeg skal lige prøve noget... jeg vender tilbage om lidt.
30. juli 2004 - 00:21
#16
Hvor abbonerer du på den her : public void doSendMail(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e) { TextBox l; l = (TextBox) e.Item.FindControl("input_contact_name"); if(!(l == null) ){ Response.Write(l.Text); } }
30. juli 2004 - 00:22
#17
hvor jeg abbonnerer den ? jeg er desværre ikke helt med ?
30. juli 2004 - 00:24
#18
Du skrev i starten at du havde prøvet med det jeg skrev.... men hvordan sørger du for at den bliver kaldt ?
30. juli 2004 - 00:24
#19
hvis jeg kører den siger den : Compiler Error Message: CS0123: Method 'finalSite.WebForm1.doSendMail(object, System.Web.UI.WebControls.RepeaterCommandEventArgs)' does not match delegate 'void System.EventHandler(object, System.EventArgs)' Det var noget jeg fandt på msdn...
30. juli 2004 - 00:24
#20
Den skulle nemlig virke fint nok hvis det er et itemcommand du abbonnerer på.
30. juli 2004 - 00:25
#21
(og ud fra signaturen ser det sådan ud)
30. juli 2004 - 00:25
#22
det gør jeg på knappen... OnClick="doSendMail"
30. juli 2004 - 00:27
#23
kan du da få det til at virke ? jeg har tænkt på at lave alle mine repeaters om til user controls, og på den måde simpelt gøre det hele.. men det er bare trist at begynde på nu...
30. juli 2004 - 00:29
#24
ok .... den kan du ikke oprette med den signatur - det er derfor du får fejl. prøv at angiv den som en normal click-handler (object sender, System.EventArgs e), og prøve så denne her : foreach(RepeaterItem ri in Repeater1.Items) { TextBox t = (TextBox)ri.FindControl("input_contact_name"); }
30. juli 2004 - 00:29
#25
Så skulle den gerne finde en for hvert item i din repeater.
30. juli 2004 - 00:34
#26
protected System.Web.UI.WebControls.TextBox t; public void doSendMail(object sender, System.EventArgs e) { foreach(RepeaterItem ri in ContactRepeater.Items) { t = (TextBox)ri.FindControl("input_contact_name"); } Response.Write(t.Text); } Den her udskriver sku heller ikke noget... jeg fatter det ikke længere...
30. juli 2004 - 00:35
#27
Sæt din response.write ind i løkken
30. juli 2004 - 00:44
#28
Det samme.. Men går jeg ind og tilføjer : Response.Write((ContactRepeater.Controls[0].FindControl("input_contact_name"))); printer den godt nok : System.Web.UI.WebControls.TextBox som om den får fat i noget.. men jeg giver sku snart fortabt..
30. juli 2004 - 00:48
#29
har du et forslag til en nødløsning ?
30. juli 2004 - 00:55
#30
Hvad står der i tekstboksen ?
30. juli 2004 - 00:55
#31
bare et eller andet du skriver ind eller hva ?
30. juli 2004 - 00:56
#32
ja jeg skriver bare et eller andet... men den printer intet.. jeg har forsøgt at sætte en kage med indholdet af den, samt en session.. men intet sker..
30. juli 2004 - 00:57
#33
databinder du repeateren ?
30. juli 2004 - 00:59
#34
ja med et xml dokument.. ellers vises den ikke.. jeg har så X antal repeaters, og alt efter querystring "page" databinder den den repeater der nu skal være aktuel..
30. juli 2004 - 00:59
#35
Jeg har lidt fortrudt det blev bygget sån, men det var lige en nem måde at lave en template på..
30. juli 2004 - 01:01
#36
jeg vil meget gerne se den kode du databinder med
30. juli 2004 - 01:01
#37
giv ikke op :o)
30. juli 2004 - 01:01
#38
vi løser det nu...
30. juli 2004 - 01:05
#39
// hent data til ContactRepeater if(Request.QueryString["page"] == "Contact") { xmlMain = new DataSet(); xmlMain.ReadXml(Server.MapPath("Language/" + userLA + "/Contact.Xml")); ContactRepeater.DataSource = xmlMain; ContactRepeater.DataBind(); } // UserLA er så valgt sprog.. ud fra cookie...
30. juli 2004 - 01:09
#40
Jeg trode bare man skulle gøre brug af RepeaterCommandEventArgs når det nu engang lå i itemtemplate, men er det kun hvis man generere flere knapper ? jeg må indrømme det ikke helt er min stærke side det her..
30. juli 2004 - 01:10
#41
kører du den binding fra page_load ?
30. juli 2004 - 01:12
#42
hvis du databinder fra page_load, og ikke har kode som det her : if(!IsPostBack) // databinding Vil du databinde inden din handler køres, og hvis du i datakilden har "" som værdi til tekstboksen, er det lige nøjagtig hvad den indeholder når du når handleren... og det vil så sikre dig at du ikke får skrevet noget ud.
30. juli 2004 - 01:14
#43
Pinligt..... men tak :)... det problem har man jo sloges noget med... Jeg smider lige 100 point mere... mange tak for din tid..
30. juli 2004 - 01:14
#44
kom lige med et svar til den her, samt det næste spm jeg opretter
30. juli 2004 - 01:16
#45
Så havde nogle af de tidligere try garenteret også virket... grrr :).. waste af en hel dag..
30. juli 2004 - 01:16
#46
Du behøves ikke oprette flere spørgsmål :o) - her er jo rigeligt med point her.
30. juli 2004 - 01:17
#47
ja det er lidt surt sådan noget - men det er også lidt en snyder... altså det der med at page_load kører inden handleren eksekveres... Det er en sikker fælde.
30. juli 2004 - 01:17
#48
jo det er ok.. jeg har kæmpet med det her så længe :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.