Avatar billede karsten_larsen Praktikant
30. januar 2007 - 13:18 Der er 10 kommentarer og
1 løsning

Aflæse hvilken Buttom (auto genereret) som vælges

Fra Datareader bindes data til en Repeater hvor rækkerne supleres med tilhørende buttoms. Så antallet af buttoms afhænger af antal rækker. Ser således ser det ud:

Navn Antal Buttom
Navn2 Antal2 Buttom
Navn4 Antal4 Buttom
etc.

Jeg skal finde, hvilken Buttom der er trykket på. Så derfor ser Buttom således ud
<asp:Button ID="Button1"  OnDataBinding='<%# Eval("Id") %>' runat="server" Text="Button"  />

Dette Id vil jeg gerne fange? Hvordan gøres det? Har prøvet med følgende uden held:
Protected Sub Repeater_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles Repeater.ItemCommand
        lblDataModtaget.Text = Repeater.FindControl("Button1").ToString
    End Sub


??:-) karsten_larsen
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 14:09 #1
drop
<asp:Button ID="Button1"  OnDataBinding='<%# Eval("Id") %>' runat="server" Text="Button"  />


og gør sådan her:
<asp:label id="lblId" runat="Server" visible=false; Text='<%# Eval("Id") %>'></asp:label>
<asp:Button ID="Button1"  runat="server" Text="Button"  />

Protected Sub Repeater_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles Repeater.ItemCommand
        lblDataModtaget.Text = ((Label)Repeater.FindControl("lblId")).Text
    End Sub
Avatar billede karsten_larsen Praktikant
30. januar 2007 - 14:39 #2
dr_chaos - godt se pointen, men får syntaks fejl på
((Label)Repeater.FindControl("lblId")).Text
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 14:45 #3
prøv lige med:

  lblDataModtaget.Text =((Label)e.Item.FindControl("lblId")).Text
Avatar billede karsten_larsen Praktikant
30. januar 2007 - 14:52 #4
næhe får følgende :
"Label" is a type and connet be used as an expression
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 14:59 #5
doh sidder lige og tænker på c# :)
prøv lige med:
lblDataModtaget.Text = CType(e.Item.FindControl("lblId"), Label).Text
Avatar billede karsten_larsen Praktikant
30. januar 2007 - 15:05 #6
jeps ingen syntaks fejl men server fejl istedet:

Ugyldigt tilbagesendelses- eller tilbagekaldsargument.  Hændelsesvalidering er aktiveret ved hjælp af <pages enableEventValidation="true"/> i konfigurationen eller <%@ Page EnableEventValidation="true" %> på en side. Af sikkerhedsmæssige hensyn kontrollerer denne funktion, at argumenter til tilbagesendelses- og tilbagekaldshændelser stammer fra det serverkontrolelement, der oprindelig gengav dem. Hvis dataene er gyldige og forventede, kan du bruge metoden ClientScriptManager.RegisterForEventValidation til at registrere tilbagesendelses- og tilbagekaldsdataene til validering.

øhh - hvad er løsningen på dette?
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 15:07 #7
muligves har du nogle < eller > i din repeater.
Avatar billede snepnet Nybegynder
30. januar 2007 - 19:33 #8
enableEventValidation="false" i dit pagedirective vil nok løse det, men kan du ikke viser den kode du bruger til at sætte knapperne ind?
Mvh
Avatar billede karsten_larsen Praktikant
30. januar 2007 - 21:35 #9
jo

Aspx side:

<asp:Repeater ID="Repeater4" runat="server">
<HeaderTemplate>
<table  width="400" border ="1">
<tr>
<th>
Navn</th>
<th>
Valg</th>

</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label runat="server" ID="lblNavn" text='<%# Eval("Navn") %>' Enabled ="true" Visible="true"/>
</td>
<td>
<asp:label id="lblId" runat="Server" visible="false" Text='<%# Eval("Id") %>'></asp:label>
<asp:Button ID="Button1"  runat="server" Text="Button"  /> 
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>

Codebehind:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
BDUserTest(Repeater4)
End Sub

    Sub BDUserTest(ByVal element As Repeater)
        Dim Connection = New System.Data.SqlClient.SqlConnection
        Connection.ConnectionString = ConfigurationManager.ConnectionStrings("XXXXXX").ConnectionString

        Dim Command = New System.Data.SqlClient.SqlCommand
        Command.CommandText = "[YYYYY]"
        Command.CommandType = System.Data.CommandType.StoredProcedure
        Command.Connection = Connection

        Dim parameterItemId1 As SqlParameter ' UserId
        parameterItemId1 = Command.CreateParameter()
        parameterItemId1.ParameterName = "@UserId"
        parameterItemId1.Direction = ParameterDirection.Input
        parameterItemId1.SqlDbType = SqlDbType.Int
        parameterItemId1.Value = 17
        Command.Parameters.Add(parameterItemId1)

        Dim parameterItemId2 As SqlParameter ' ValgId
        parameterItemId2 = Command.CreateParameter()
        parameterItemId2.ParameterName = "@ValgId"
        parameterItemId2.Direction = ParameterDirection.Input
        parameterItemId2.SqlDbType = SqlDbType.Int
        parameterItemId2.Value = 43
        Command.Parameters.Add(parameterItemId2)

        Connection.Open()
        Dim DataReader As SqlDataReader
        DataReader = Command.ExecuteReader(CommandBehavior.CloseConnection)

        element.DataSource = DataReader
        element.DataBind()

        Connection.Close()
        Command.dispose()
        Connection.Dispose()
    End Sub
Avatar billede karsten_larsen Praktikant
30. januar 2007 - 22:13 #10
dr_chaos -> det virker fint, havde lige glemt sætte IsPostBack. Vil du lave et svar?
Avatar billede dr_chaos Nybegynder
30. januar 2007 - 22:17 #11
hehe svar :)
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