2011-08-05 7 views
0

FormView에서 작업 할 드롭 다운 목록 컨트롤을 가져 오려고합니다. 목록을 특정 테이블의 필터링 된보기로 유지하고 편집중인 데이터의 필드에 여전히 바인딩해야합니다. 항목 데이터를 프로그래밍 방식으로 설정해 보았습니다. 개미가 작동하지만 그 다음 데이터 바인딩 이 작동하지 않습니다. 데이터베이스에 null을 삽입하려고 시도합니다.FromView 컨트롤에서 DropDownList 사용

이것은 내가 시도한 코드입니다. 또한 다른 여러 이벤트에서 동일한 작업을 시도했지만 여전히 데이터베이스에 null을 삽입하려고합니다.

  <asp:DropDownList ID="lstManagers" runat="server" 
       OnDataBound ="ManagersLoad" 
       SelectedValue='<%# Bind("UserName") %>' Width="100%" 
       DataSourceID="TimeOff" DataTextField="UserName" DataValueField="UserName"> 
      </asp:DropDownList> 


Protected Sub ManagersLoad(ByVal sender As Object, ByVal e As System.EventArgs) 
    Dim lst As DropDownList = FormView1.FindControl("lstManagers") 
    'get list of managers 
    Using ef As New TimeOffData.TimeOffEntities 
     For Each item As ListItem In lst.Items 
      Dim li As ListItem = item 
      item.Text = (From x In ef.TimeOffUsers Where x.UserName = li.Value Select x.FirstName & " " & x.LastName).FirstOrDefault 
     Next 
    End Using 
End Sub 

답변

0

컨트롤의 모든 데이터 바인딩 항목을 가져 와서 수동으로 설정하는 것이 더 쉽다고 결정했습니다. 코드를이 코드로 변경했습니다.

Protected Sub FormView1_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs) Handles FormView1.ItemInserting 
    Dim lst As DropDownList = FormView1.FindControl("lstManagers") 
    e.Values.Item("ManagerName") = lst.SelectedValue 
End Sub 

Protected Sub ManagersLoad(ByVal sender As Object, ByVal e As System.EventArgs) 
    Dim lst As DropDownList = FormView1.FindControl("lstManagers") 
    'get list of managers 
    Using ef As New TimeOffData.TimeOffEntities 
     Dim mng = From x In ef.TimeOffUsers Where x.IsManager = True 

     For Each item In mng 
      lst.Items.Add(New ListItem(item.FirstName & " " & item.LastName, item.UserName)) 
     Next 
    End Using 
End Sub 
관련 문제