0

好的,我将尝试对我需要完成的工作给出一个非常简短而详细的描述。

首先,我定义了一个具有员工对象的 LinqToSQL 数据上下文。然后我创建了一个 BLL(部分员工)来处理我的验证、插入、更新等。此时一切都很好。接下来,我创建了一个详细信息视图,其中对象数据源绑定到我的 Employee 对象上的 select/update/insert 方法。这也很好,数据按应有的方式提取、更新、插入,除了一个问题。我在详细信息视图中的下拉列表中遇到问题。这些是必填字段,不能为空。当该约束被删除时,代码运行正常。

详细信息视图的代码片段 - 字段缩写以显示相关信息。

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

调用 insert 方法时,empType 始终返回为 Nothing(empType 是数据库字段)。

将下拉列表的值附加到我的对象以便它可以在数据库中正确创建的正确方法是什么?我的大部分搜索一直告诉我如何将下拉列表绑定到对象数据源,但这不是我需要做的。这是一个基本的下拉列表,4 个项目永远不会改变。在这里只使用标准的 HTML 选择标记是否有意义,或者甚至会有所帮助。

感谢您的关注,如果您需要更多信息,请告诉我。

4

2 回答 2

1

看起来这很简单,但是 VS2008 IDE 并没有告诉我这是一个选项。为了绑定到 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 在编译或运行时不会阻塞它,最重要的是,它可以工作!

于 2009-10-03T21:13:18.080 回答
0

一切看起来都很好,但是当您加载它时,下拉列表最初是否已填充?如果没有,请尝试在加载时将其中一项设置为选中,否则如果用户不选择一项,它可能不会返回任何值。

于 2009-10-03T20:33:18.257 回答