Источник данных .NET, DetailsView и DropDownList - PullRequest
0 голосов
/ 03 октября 2009

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

Во-первых, у меня есть определенный текст данных 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 ]

1 голос
/ 04 октября 2009

Похоже, это было что-то простое, но 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 не задушил его при компиляции или во время выполнения, и самое главное, он работает!

0 голосов
/ 04 октября 2009

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

...