Использование DropDownList в элементе управления FromView - PullRequest
0 голосов
/ 06 августа 2011

Я пытаюсь заставить работать элемент управления раскрывающегося списка в FormView. Мне нужно, чтобы список представлял собой отфильтрованное представление определенной таблицы и при этом был привязан к полю в данных, которые я редактирую. Я попытался установить данные элемента программно, муравей, который работает, но затем привязка данных не работает, пытается вставить ноль в базу данных.

Это код, который я пробовал. Я также пытался сделать то же самое в нескольких других событиях, он все еще пытается вставить ноль в базу данных.

            <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

1 Ответ

0 голосов
/ 08 августа 2011

Я взял все элементы привязки данных элемента управления и просто решил, что будет проще сделать это вручную. Я изменил код на это,

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
...