Avatar billede unknown_someone Juniormester
31. august 2005 - 14:45 Der er 6 kommentarer og
1 løsning

onclick-fejl på linkbutton i repeater

Jeg har lavet en linkbutton der kalder en sub som - indtil videre i hvert fald - ikke gøre andet end at vise et ekstra panel. Det fungerer fint.

Jeg har også nogle linkbuttons der bliver udskrevet i en repeater - de er nøjagtig meget til min anden linkbutton bortset fra at teksten er anderledes. Helt præcis ser de sådan ud;

<asp:LinkButton Text='<%#(Container.DataItem("name"))%>' onclick="minfunction" runat="server" id="linkrepeat" />

-------

Sub minfunction(ByVal sender As Object, ByVal e As EventArgs)
    search01.Visible = True
End Sub

Som sagt virker funktionen fint når jeg klikker på min normale linkbutton, men når jeg klikker på en linkbutton udskrevet fra min repeater bliver funktionen ikke udført.

Hvad gør jeg forkert?
Avatar billede snepnet Nybegynder
31. august 2005 - 14:57 #1
det ser umiddelbart fint nok ud - har du checket at du kommer ned i handleren?
(altså med noget debugging ell.... eller bare en Response.Write("test"))
ligger din linkbutton direkte under din itemtemplate - eller er den pakket ind i noget mere?
mvh
Avatar billede unknown_someone Juniormester
31. august 2005 - 15:00 #2
jeg har prøvet med response.write - og det bliver ikke udskrevet. Det ser altså ud som om den ikke kommer derned.

Min linkbutton ligger direkte under min itemtemplate.
Avatar billede snepnet Nybegynder
31. august 2005 - 15:05 #3
mmm... har et c# eksempel du kan få her (som fungerer fint) - måske du selv kan få øje på et eller andet så ?!?

<body>
    <form id="form1" runat="server">
    <div>
        <asp:Repeater ID="rep" runat="server">
        <ItemTemplate>
            <asp:LinkButton ID="lbtnLink" runat="server" OnClick="lbtnLink_Click" Text="KLIK HER"></asp:LinkButton><br />
        </ItemTemplate>
        </asp:Repeater>
    </div>
    </form>
</body>

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        rep.DataSource = new SampleData.PersonAccess().GetAllPersons();
        rep.DataBind();
    }
}

protected void lbtnLink_Click(object sender, EventArgs e)
{
    Response.Write("test");
}

mvh
Avatar billede unknown_someone Juniormester
31. august 2005 - 15:18 #4
den eneste forskel jeg kunne se var at jeg på min repeater havde sat  EnableViewState="false" på - fjerner jeg det så virker det.

næste lille problem som jeg håber du kan hjælpe med er hvordan jeg så via mit link får en unik værdi ned til min funktion. jeg har jo <%#(Container.DataItem("name"))%> som er teksten linket får - den værdi jeg så gerne vil have ned kommer fra <%#(Container.DataItem("code"))%> men hvordan får jeg den med?
Avatar billede snepnet Nybegynder
31. august 2005 - 15:28 #5
ok.
du kan sætte CommandName og CommandArgument på din linkbutton - det kan du så snable på i koden :

// i din handler
LinkButton lbtn = sender as LinkButton;
if(lbtn != null)
{
  string commandName = lbtn.CommandName;
  string commandArgument = lbtn.CommandArgument;
}

de kan sættes i aspx'en sådan her:

<asp:LinkButton ID="lbtnLink" CommandName='<%# ... >' CommandArgument='<%# ... >' runat="server" OnClick="lbtnLink_Click" Text="KLIK HER"></asp:LinkButton><br />

... er så bare et eller andet databindingsudtryk - hvad du nu skal bruge.

mvh
Avatar billede unknown_someone Juniormester
31. august 2005 - 16:35 #6
det kom til at virke - lægger du et svar?
Avatar billede snepnet Nybegynder
31. august 2005 - 16:39 #7
jup :o)
mvh
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