Источник данных.NET, DetailsView и DropDownList

Хорошо, я попытаюсь дать очень сжатое, но подробное описание того, что мне нужно сделать.

Во-первых, у меня есть определенный текст данных LinqToSQL, в котором есть объект сотрудника. Затем я создал BLL (часть сотрудника), который обрабатывает мои проверки, вставки, обновления и т. Д. Все хорошо на этом этапе. Затем я создал подробное представление с привязкой источника данных объекта к моим методам выбора / обновления / вставки в моем объекте Employee. Это тоже хорошо, данные вытягиваются как надо, обновления, вставки как надо, за исключением одной проблемы. У меня возникли проблемы с раскрывающимся списком в представлении сведений. Это обязательные поля, не могут быть пустыми. Когда это ограничение сброшено, код работает нормально.

Фрагмент кода просмотра информации - поля, сокращенные для отображения соответствующей информации.

<asp:DetailsView ID="grd_empDetails"  runat="server" DataSourceID="empDataSource" DataKeyNames="EmployeeID" DefaultMode="Insert" AutoGenerateRows="false">
            <Fields>
                <asp:BoundField HeaderText="First Name" DataField="FirstName" />
                <asp:TemplateField HeaderText="Type of Employee">
                    <ItemTemplate>
                        <asp:DropDownList ID="empType" runat="server" DataValueField="empType" AppendDataBoundItems="true">
                            <asp:ListItem Text="Full Time" Value="1" />
                            <asp:ListItem Text="Part Time" Value="2" />
                            <asp:ListItem Text="Subcontractor or 1099" Value="3" />
                            <asp:ListItem Text="Intern" Value="4" />
                        </asp:DropDownList>
                    </ItemTemplate>                   
                </asp:TemplateField>
                <asp:CommandField ShowInsertButton="true" ShowCancelButton="true" />    
            </Fields>
        </asp:DetailsView>

Когда вызывается метод вставки, empType всегда возвращается как Nothing (empType является полем базы данных).

Как правильно прикрепить значение выпадающего списка к моему объекту, чтобы его можно было правильно создать в базе данных? Большинство моих запросов постоянно говорят мне, как привязать выпадающий список к источнику данных объекта, но это не то, что мне нужно делать. Это основной выпадающий список, 4 пункта, которые никогда не изменятся. Имеет ли смысл использовать здесь только стандартный HTML-тег select или это даже поможет.

Спасибо за просмотр, дайте мне знать, если вам нужна дополнительная информация.

2 ответа

Решение

Похоже, все было просто, но IDE VS2008 не показывал мне, что это вариант. Для привязки к ObjectDataSource вы должны сделать что-то вроде этого:

<asp:TemplateField HeaderText="Type of Employee">
                    <ItemTemplate>
                        <asp:DropDownList ID="empType" runat="server" DataValueField="empType" SelectedValue='<%#Bind("empType") %>'>
                            <asp:ListItem Text="Full Time" Value="1" />
                            <asp:ListItem Text="Part Time" Value="2" />
                            <asp:ListItem Text="Subcontractor or 1099" Value="3" />
                            <asp:ListItem Text="Intern" Value="4" />
                        </asp:DropDownList>
                    </ItemTemplate>                   
                </asp:TemplateField>

Часть SelectedValue в раскрывающемся списке не показалась мне допустимым тегом для раскрывающегося списка, но VS не задушил его при компиляции или во время выполнения, и самое главное, он работает!

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

Другие вопросы по тегам