Announcement

Collapse
No announcement yet.

greenhorn - kein wert in variable??

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • greenhorn - kein wert in variable??

    hallo pro´s!!

    ich bin noch ein greeny und code nach vorlage.
    habe die unten folgende site gebaut, aber folgendes problem:

    beim update scheint die variable '@Sport' keinen wert zu übergeben.
    wenn ich mit "..Leistung.Sport = 12.." einen wert angebe, ist alles gut.

    -----
    Code:
            <asp:ListView ID="lstSchueler" runat="server"
                          DataSourceID = "contrSchulverwaltungDB2"
                          DataKeyNames = "Leistung_ID">    
                <LayoutTemplate>
                    <table id="Table2" runat="server" border="1" cellpadding="3">
                        <tr id="Tr1" runat="server">
                            <td id="Td2" colspan="3" runat="server" style="font-weight:bold">
                            <h2>Klasse ######  Fach ######</h2></td>
                        </tr>
                        <tr id="itemPlaceholder" runat="server" />
                    </table>
                </LayoutTemplate>
                <ItemTemplate>
                    <tr id="Tr2" runat="server">
                        <td>
                            <%# Eval("Nachname") %>
                        </td>
                        <td>
                            <%# Eval("Vorname") %>
                        </td>
                        <td style="min-width:50px">
                            <%# Eval("Sport") %>
                        </td>
                        <td>
                            <asp:Button ID="aendern" runat="server"
                                 CommandName="Edit" Text="Aendern" />
                        </td>
                     </tr>
                </ItemTemplate>
                <EditItemTemplate>
                    <tr id="Tr2" runat="server">
                        <td>
                            <%# Eval("Nachname") %>
                        </td>
                        <td>
                            <%# Eval("Vorname") %>
                        </td>
                        <td>
                            <asp:TextBox ID="SportTextBox" runat="server" Width="50px"
                                 Text='<%# Bind("Sport") %>' />
                        </td>
                        <td>
                            <asp:Button ID="speichern" runat="server"
                                 CommandName="Update" Text="Speichern" />
                        </td>
                     </tr>
                </EditItemTemplate>
            </asp:ListView>
            <asp:SqlDataSource ID="contrSchulverwaltungDB2" runat="server"
                ConnectionString = "<%$ connectionStrings:constrSchulverwaltungDB %>"
                ProviderName="<%$ connectionStrings:constrSchulverwaltungDB.providerName %>"
                SelectCommand="SELECT Leistung_ID, Nachname, Vorname, Sport 
                               FROM Klassen INNER JOIN 
                               (Schueler INNER JOIN Leistung ON Schueler.Schueler_ID = Leistung.FK_Schueler_ID)
                               ON Klassen.Klasse_ID = Leistung.FK_Klasse_ID
                               WHERE (((Klassen.Klasse_Bezeichnung)='11b'))"
                UpdateCommand="UPDATE Leistung
                               SET Leistung.Sport = @Sport
                               WHERE (((Leistung.Leistung_ID)=@Leistung_ID))">
                <UpdateParameters>
                    <asp:Parameter Name="Leistung_ID" Type="Int16" />
                    <asp:Parameter Name="Sport" Type="Int16" />
                </UpdateParameters>
            </asp:SqlDataSource>
        </div>
    ----

    bitte hilfe!! ich werde schon wahnsinnig!!

    thx
    ht
    Zuletzt editiert von htsteil; 21.02.2010, 16:33.

  • #2
    1. Bitte formatiere deine Code
    2. Das Übergeben von Werten in SqlDataSourse haben wir hier http://entwickler-forum.de/showthread.php?t=59895diskutiert. Dort findest du auch die referenzen in MSDN mit Beispilen. Nimm bitte ein Beispiel und mache nach Vorlage :-) Gruß
    Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

    Comment


    • #3
      sorry. ich hoffe so ist besser.

      und danke für Deine antwort. allerdings kann ich nicht viel damit anfangen. den thread hatte ich auch vorher schon gefunden.

      mein problem ist, ich bekomme keine fehlermeldung. der code tut.

      auch der update-command wird einwandfrei ausgeführt, nur halt leider nicht der inhalt der 'SportTextBox', also der variablen @Sport in die datenbank geschrieben, sondern ein Null-Wert.
      also bei

      Code:
                 UpdateCommand="UPDATE Leistung
                                 SET Leistung.Sport = @Sport
                                 WHERE (((Leistung.Leistung_ID)=@Leistung_ID))">
                  <UpdateParameters>
                      <asp:Parameter Name="Leistung_ID" Type="Int16" />
                      <asp:Parameter Name="Sport" Type="Int16" />
                  </UpdateParameters>
      wenn ich hingegen keine variable, sondern einen absoluten wert in den update-string schreibe, wird der auch in der DB übernommen. zb

      Code:
                 UpdateCommand="UPDATE Leistung
                                 SET Leistung.Sport = 12
                                 WHERE (((Leistung.Leistung_ID)=@Leistung_ID))">
      und genau da komme ich nicht weiter.

      vielleicht steckt die antwort ja sogar in dem anderen thread, dann sehe ich sie aber nicht.

      für hilfe wäre ich wirklich dankbar!!

      gruesse
      ht

      Comment


      • #4
        <%# Eval("Sport") %> - finktioniert nur in eine Richtung: Anzeigen.

        <%# Bind("Sport") %> - funktioniert in beide Richtungen: Anzeigen/Speichern.
        Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

        Comment


        • #5
          hey,

          danke für die antwort.
          aber: ich habe doch ' Bind("Sport") ' verwendet.

          der schreibt mir aber nur einen NULL-Wert in die tabelle....

          kann da jemand noch mal helfen??

          gruesse
          ht

          Comment


          • #6
            Hallo,

            ich denke das automatische Binden nur mit Angabe des Datenfeldnamens geht nur im DataGrid. In deinem Fall weiss die SqlDataSource nicht wo der Wert für den Parameter herkommt, da er in einer Textbox steht.
            Versuche doch mal den UpdateParameter so zu definieren:

            HTML Code:
            <UpdateParameters>
                    <asp:Parameter Name="Leistung_ID" Type="Int16" />
                    <asp:ControlParameter Name="Sport" Type="Int16" ControlId="SportTextBox" PropertyName="Text" />
            </UpdateParameters>
            Damit sollte der Parameterwert aus dem eingegebenen Text der Textbox gelesen werden.

            Gruß, Bruno

            Comment


            • #7
              hi,

              danke schon mal. aber das verursacht:

              [InvalidOperationException: Das Steuerelement SportTextBox konnte in ControlParameter Sport nicht gefunden werden.]

              muss ich die TextBox dann anders deklarieren?

              Comment


              • #8
                Hallo nochmal,

                sorry, das war ein Denkfehler meinerseits.
                Das funktioniert für Einfachbindung, aber nicht im ListView.
                Bind("Sport") ist hier schon richtig.
                Leider fällt mir momentan sonst aber auch nichts ein.

                Gruss, Bruno

                Comment


                • #9
                  Aktualisiere dein SqlDataSource über VS Master (wie beim ersten Erstellen) noch mal und mache dort Testabfrage mit dem Testparameter. Kommt was raus ?

                  und Noch mal Syntax:
                  '<%# Bind("Sport") %>'
                  Einführungszeichen !!
                  Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

                  Comment

                  Working...
                  X