.NET Object Datasource,DetailsView和DropDownList

时间:2009-10-03 19:46:10

标签: .net drop-down-menu objectdatasource detailsview

好的,我将尝试对我需要完成的内容进行详细描述。

首先,我定义了一个具有employee对象的LinqToSQL datacontext。然后我创建了一个BLL(员工的一部分)来处理我的验证,插入,更新等。在这一点上,Everthing很好。接下来,我创建了一个detailsview,其中一个对象数据源绑定到我的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选择标记是否有意义,或者甚至可以提供帮助。

感谢您的关注,如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分: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在编译或运行时没有阻塞它,最重要的是,它可以工作!

答案 1 :(得分:0)

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