2009-03-02 9 views
19

Powiązanie danych dotyczy wyłącznie kodu deklaratywnego, prawda? Tak więc określam, co chcę z atrybutami, a struktura zajmuje się resztą. O ile się nie mylę, a powiązanie danych dotyczy S & M, prawda?Jak powiązać wybraną wartość DropDownList

Dlaczego kontrolka DropDownList dostarcza tylko pola powiązania dla jego źródła danych, tj. Źródła listy, a nie dla rzeczywistego pola danych. tj. jak do cholery wiążę wybraną wartość moją nazwę DropDownList do pola Name w moim rekordzie Person? Czy jest to poważny niedopatrzenie ze strony Microsoftu, czy mojego?

Jaki jest sens dwukierunkowego powiązania danych, jeśli nadal muszę ręcznie ustawić i odczytać wybraną wartość?

Odpowiedz

44

może chcesz coś zrobić jak poniżej kodu. nie można ustawić „SelectedValue” deklaratywnie, ale mówiąc „SelectedValue = <% # [kod tutaj]%> jesteś skutecznie powodując wartość należy ustawić, gdy kontrola jest dane związane.

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

Dzięki, byłem trochę szybki: po prostu spojrzałem na Intellisense dla atrybutu Value, a żaden nie pokazał, więc zapytałem, nie patrząc dalej. W komentarzach potrzebujemy zawstydzonej emotikony. – ProfK

+1

Otrzymuję, w .NET 4, błąd stwierdzający: "Wywołanie Bind musi zostać przypisane do właściwości formantu wewnątrz szablonu", nawet jeśli kontrolka znajduje się wewnątrz ItemTemplate w GridView. Zmieniło się dla mnie Zmiana Bind na Eval. –

+0

@Andrew - Kopalnia znajduje się w polu edycji szablonu i używam programu asp.NET 4.0. Próbowałem używać EVAL zamiast Bind, ale nadal nie działało. Jakieś pomysły? –

-1

Istnieje pole, w którym definiowane jest źródło danych, pole datatext (co pojawia się na liście) i pole datavalue.

Przykład (mam DataTable z kolumną „EmployeeID” i kolumny „EmployeeName”):

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

Jeżeli odczytuje pan moje pytanie chcesz zobaczyć, co wiem o te. Chciałem wiedzieć, jak powiązać wybraną wartość do inne źródło danych, o co prosiłem. – ProfK

+0

Nie ma znaczenia, czy wiesz o tym. Jeśli twoje pytanie powinno być korzystne dla innych, być może powinno zawierać różnorodne rozwiązania. – Harry

0

nie wiem, czy to będzie naprawdę pomóc, ale czy próbował setup „SelectedValue” na kod związany

Przykład:

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