Avatar billede ddobbeltv Nybegynder
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
Avatar billede snepnet Nybegynder
29. juli 2004 - 21:56 #1
Sidder din knap i dit repeateritem ?
Avatar billede snepnet Nybegynder
29. juli 2004 - 23:07 #2
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 ?
Avatar billede ddobbeltv Nybegynder
29. juli 2004 - 23:32 #3
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..
Avatar billede ddobbeltv Nybegynder
29. juli 2004 - 23:33 #4
Men jeg har mange repeaters på min default.aspx, jeg har én for hver side, som jeg så databinder med et xml dokument...
Avatar billede snepnet Nybegynder
29. juli 2004 - 23:34 #5
Ok.... hvor har du din knap ´?
Avatar billede ddobbeltv Nybegynder
29. juli 2004 - 23:45 #6
Arjjj fuck, nu har jeg slettet det hele... giv mig lige 10 minutter..
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 00:05 #7
sån... Prøv at hente filen igen... jeg har smidt det lille stykke cs med...
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 00:06 #8
nej den kan ikke tage de webcontrols.... vent..
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 00:06 #9
<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>
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 00:07 #10
Avatar billede snepnet Nybegynder
30. juli 2004 - 00:07 #11
Ok... jeg kan ikke se nogen tekstbokse i din itemtemplate.
Avatar billede snepnet Nybegynder
30. juli 2004 - 00:10 #12
hov - så dukkede der en tekstboks op. synes ikke jeg kunne finde nogen før.. sorry
Avatar billede ddobbeltv Nybegynder
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>
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 00:11 #14
hehe ok :)
Avatar billede snepnet Nybegynder
30. juli 2004 - 00:13 #15
Jeg skal lige prøve noget... jeg vender tilbage om lidt.
Avatar billede snepnet Nybegynder
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);
  }
}
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 00:22 #17
hvor jeg abbonnerer den ? jeg er desværre ikke helt med ?
Avatar billede snepnet Nybegynder
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 ?
Avatar billede ddobbeltv Nybegynder
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...
Avatar billede snepnet Nybegynder
30. juli 2004 - 00:24 #20
Den skulle nemlig virke fint nok hvis det er et itemcommand du abbonnerer på.
Avatar billede snepnet Nybegynder
30. juli 2004 - 00:25 #21
(og ud fra signaturen ser det sådan ud)
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 00:25 #22
det gør jeg på knappen... OnClick="doSendMail"
Avatar billede ddobbeltv Nybegynder
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...
Avatar billede snepnet Nybegynder
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");
}
Avatar billede snepnet Nybegynder
30. juli 2004 - 00:29 #25
Så skulle den gerne finde en for hvert item i din repeater.
Avatar billede ddobbeltv Nybegynder
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...
Avatar billede snepnet Nybegynder
30. juli 2004 - 00:35 #27
Sæt din response.write ind i løkken
Avatar billede ddobbeltv Nybegynder
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..
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 00:48 #29
har du et forslag til en nødløsning ?
Avatar billede snepnet Nybegynder
30. juli 2004 - 00:55 #30
Hvad står der i tekstboksen ?
Avatar billede snepnet Nybegynder
30. juli 2004 - 00:55 #31
bare et eller andet du skriver ind eller hva ?
Avatar billede ddobbeltv Nybegynder
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..
Avatar billede snepnet Nybegynder
30. juli 2004 - 00:57 #33
databinder du repeateren ?
Avatar billede ddobbeltv Nybegynder
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..
Avatar billede ddobbeltv Nybegynder
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å..
Avatar billede snepnet Nybegynder
30. juli 2004 - 01:01 #36
jeg vil meget gerne se den kode du databinder med
Avatar billede snepnet Nybegynder
30. juli 2004 - 01:01 #37
giv ikke op :o)
Avatar billede snepnet Nybegynder
30. juli 2004 - 01:01 #38
vi løser det nu...
Avatar billede ddobbeltv Nybegynder
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...
Avatar billede ddobbeltv Nybegynder
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..
Avatar billede snepnet Nybegynder
30. juli 2004 - 01:10 #41
kører du den binding fra page_load ?
Avatar billede snepnet Nybegynder
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.
Avatar billede ddobbeltv Nybegynder
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..
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 01:14 #44
kom lige med et svar til den her, samt det næste spm jeg opretter
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 01:16 #45
Så havde nogle af de tidligere try garenteret også virket... grrr :).. waste af en hel dag..
Avatar billede snepnet Nybegynder
30. juli 2004 - 01:16 #46
Du behøves ikke oprette flere spørgsmål :o) - her er jo rigeligt med point her.
Avatar billede snepnet Nybegynder
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.
Avatar billede ddobbeltv Nybegynder
30. juli 2004 - 01:17 #48
jo det er ok.. jeg har kæmpet med det her så længe :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester