none
Repeater und Javascript Funktion aufrufen RRS feed

  • Frage

  • Hallo , ich habe folgenden Code in einer ASP.NET Webseite

    <asp:Repeater ID="Repeater_Daten" runat="server">
    <ItemTemplate>

      <asp:Label ID="Labeltelefon" runat="server" Text='<%#DataBinder.Eval(Container, "DataItem.Telefon")%>'
     onclick="""MyFunc('<%#DataBinder.Eval(Container.DataItem, "Telefon")%>')""" > </asp:Label>


        </ItemTemplate>
     </asp:Repeater>


    <script type="text/javascript">
         function MyFunc(controlValue) {
             alert(controlValue);
     ..diverses..
       
         }
    </script>


    ich bekomme immer die Fehlermeldung
    Parserfehlermeldung: Servertag wurde falsch formatiert.
    Beim Label ->onClick
    Irgendwie habe ich die Hochkommata falsch gesetzt , habe schon alles mögliche probiert. Sehr ihr den Fehler?


    Montag, 27. April 2015 18:26

Antworten

  • Hallo Thomas,

    in dem Fall dann doch die zweite genannte Variante mit Container.DataItem( "Telefon" ), also bspw. so:

    <asp:Label ID="Labeltelefon"
               runat="server"
               Text='<%# Container.DataItem( "Telefon" ) %>'
               onclick='<%# String.Format( "MyFunc( ""{0}"" );", Container.DataItem( "Telefon" ) ) %>' />


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 27. April 2015 20:54
    Moderator

Alle Antworten

  • Hallo Thomas,

    in der Regel sollte man sparsam mit diesen Konstrukten umgehen, da die Übersicht recht schnell verloren geht (wie Du ja grade merkst^^)

    Probier es mal hiermit:

    <asp:Label ID="Labeltelefon"
               runat="server"
               Text='<%# Container.DataItem.Telefon %>'
               onclick='<%# String.Format( "MyFunc( ""{0}"" );", Container.DataItem.Telefon ) %>' />

    Für VB.NET kannst Du für die Angabe der Bindings eine kürzere Schreibweise verwenden. Bspw. Container.DataItem.Eigenschaft für Objekte, deren Eigenschaft Du abgreifen willst bzw. Container.DataItem( "Spalte" ) für DataRows, ...

    Das DataBinder.Eval kannst Du dir hierbei sparen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 27. April 2015 18:32
    Moderator
  • Hi Stefan, das war ja Fix. Bekomme aber wenn ich deinen obigen Code nehme folgenden Fehler
    System.MissingMemberException wurde nicht von Benutzercode behandelt.
      HResult=-2146233070
      Message=Der öffentliche Member Telefon für den Typ DataRowView wurde nicht gefunden.
      Source=Microsoft.VisualBasic
    Montag, 27. April 2015 18:45
  • Hallo Thomas,

    in dem Fall dann doch die zweite genannte Variante mit Container.DataItem( "Telefon" ), also bspw. so:

    <asp:Label ID="Labeltelefon"
               runat="server"
               Text='<%# Container.DataItem( "Telefon" ) %>'
               onclick='<%# String.Format( "MyFunc( ""{0}"" );", Container.DataItem( "Telefon" ) ) %>' />


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 27. April 2015 20:54
    Moderator