2009-07-03 10 views
0

ich eine SqlDataSource-Verbindung haben, in deren Parameter wird der Einsatz Parametersatz alsVerständnis Parameter in asp.net Databinding

INSERT INTO [user_info] ([firstname], [lastname], [age]) VALUES (@firstname, @lastname, @age) 

Jetzt i @firstname verstehen, @lastname sind @age die Parameter, auf die i gesetzt ihnen der Wert.

Ich bin es mit einem Formview DataBinding, die automatisch bindet die Textbox in der Einfügetitemplate mit den Spalten Vorname, Nachname und Alter jeweils. Zum Beispiel hat das Textfeld Vorname die folgende Eigenschaft.

<asp:TextBox ID="firstnameTextBox" runat="server" Text='<%# Bind("firstname") %>' /> 

Jetzt ist mein Zweifel, dass die @ firstname Variable wie mit dem Feld Vorname gebunden ist. Ich habe die Bindung nirgendwo explizit verwendet. Sprich morgen ich die Insert-Abfrage als

INSERT INTO [user_info] ([firstname], [lastname], [age]) VALUES (@fn, @ln, @ag) 

wo und alles, was ich habe, um Änderungen umbenennen möge Inorder mit dem Vor- und so weiter binden @fn.

Hope meine Frage ist klar.

+0

Bind ist die Funktion, die von .net selbst erzeugt wird, es war dort, als ich die Steuerung hinzufügte. –

Antwort

0

Kurze Antwort: Das Ändern der Parameternamen führt nicht zu einem Welleneffekt. Ändern Sie Ihren Spaltennamen.

Detaillierte Antwort: Datenbindung mit Bind (und Eval) in diesem Fall gilt für den Spaltennamen Ihrer SQL-Tabelle, nicht den Parameternamen. Wenn du die 2. INSERT-Anweisung mit @fn verwenden würdest, würde dein Bind weiterhin "firstname" verwenden, ohne geändert werden zu müssen.

Wenn Sie jedoch Ihre Tabelle aktualisiert und umbenannt in „Vorname“ Spalte „fn“ ist dies nicht mehr der Fall ist, und Sie haben jetzt zwei Möglichkeiten:

  1. aktualisieren alle Bind() ruft "zu verwenden, fn "statt" firstname "- das würde viele Änderungen erfordern, wenn es an vielen Stellen vorkommt.
  2. Aktualisieren Sie Ihre SELECT-Anweisung (oder gespeicherte Prozedur) zu Alias ​​die FN-Spalte als Vorname (dh. SELECT [FN] als Vorname, ... andere Spalten ... FROM [user_info]) - Dies ist vorteilhaft, da die Änderung geschieht an der Quelle und betrifft nicht die bestehende Bindung an "Vorname", was bedeutet, dass nur an einer Stelle eine Änderung vorgenommen wird.