2009-03-02 3 views
19

Bei der Datenbindung geht es um deklarativen Code, richtig? Also spezifiziere ich mit Attributen, was ich will und das Framework kümmert sich um den Rest. Wenn ich mich nicht irre und die Datenbindung sich auf S & M bezieht, richtig?So binden Sie den ausgewählten Wert einer DropDownList

Warum stellt das DropDownList-Steuerelement nur verbindliche Felder für seine Datenquelle, also seine Listenquelle, und nicht für sein tatsächliches Datenfeld bereit. d. h. wie zum Teufel ich den ausgewählten Wert mein Name DropDownList an das Feld Name in meinem Personendatensatz binden? Ist das eine grobe Aufsicht von Microsoft oder von mir?

Wozu dient die Zwei-Wege-Datenbindung, wenn ich den ausgewählten Wert noch manuell festlegen und lesen muss?

Antwort

44

Sie könnten so etwas wie der Code tun wollen. Sie können nicht die „SelectedValue“ deklarativ gesetzt, sondern durch sagen „SelectedValue = <% # [Code hier]%> Sie verursachen effektiv der Wert gesetzt werden, wenn die Steuerdaten gebunden.

<asp:DropDownList 
       ID="DropDownInfoSource" 
       runat="server" 
       DataSourceID="_employeeDataSource" 
       DataTextField="EmployeeName" 
       DataValueField="EmployeeID" 
       SelectedValue='<%# Bind("EmployeeID") %>' 
       /> 
+3

Danke, ich war ein bisschen schnell daneben: Ich habe gerade in Intellisense nach einem Value-Attribut gesucht, und keines zeigte, also fragte ich, ohne weiter zu suchen. Wir brauchen ein peinliches Emoticon in Kommentaren. – ProfK

+1

Ich erhalte in .NET 4 einen Fehler, der besagt: "Ein Aufruf von Bind muss einer Eigenschaft eines Steuerelements in einer Vorlage zugewiesen werden", obwohl sich das Steuerelement in einem ItemTemplate eines GridView befindet. Die Bindung zu Eval hat für mich funktioniert. –

+0

@Andrew - Mine ist in einem Bearbeitungsvorlagefeld, und ich benutze asp.NET 4.0. Ich habe versucht, EVAL anstelle von Bind zu verwenden, aber es hat immer noch nicht funktioniert. Irgendwelche Ideen? –

-1

Es gibt ein Feld, in dem Sie die Datenquelle, das Datatxtfield (was in der Liste angezeigt wird) und das Datenwertfeld definieren.

Beispiel (ich habe eine Datentabelle mit einer Spalte „EmployeeID“ und eine Spalte „EmployeeName“):

dropdownlist1.datasource = DT 
dropdownlist1.datatextfield = "EmployeeName" 
dropdownlist1.datavaluefield = "EmployeeID" 
dropdownlist1.databind() 
+7

wenn Sie meine Frage gelesen würden Sie sehen, ich kenne Ich wollte wissen, wie man den ausgewählten Wert an einen bindet andere Datenquelle, wie ich gefragt habe. – ProfK

+0

Es ist egal, ob Sie davon wissen. Wenn Ihre Frage für andere nützlich sein sollte, sollte sie vielleicht eine Variation von Lösungen enthalten. – Harry

0

ich weiß nicht, ob es Ihnen wirklich helfen, aber haben Sie Setup versucht, die „SelectedValue“ auf Code hinter

Beispiel:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    DropDownInfoSource.SelectedValue = "1" ' your value, here 
End Sub