将DDL用于LIstView控件的<edititemtemplate>时出错?

时间:2016-10-19 19:12:47

标签: asp.net webforms

在VS2010 / ASP.NET4网页中,我有一个ListView控件用于编辑和添加数据。在里面,我添加了一个DDL:

<td><asp:DropDownList ID="DropDownList2" runat="server"         DataSourceID="SqlDataSource7" DataTextField="Unit" DataValueField="UnitID"SelectedValue='<%# Bind("UnitID") %>' AutoPostBack="True"></asp:DropDownList></td>

在编辑数据记录时,DDL确实显示在Unit字段中。我更改了Unit并单击了Update按钮,然后弹出一个错误: 无法将值NULL插入列'UnitID',表'Employee'。

怎么了?

更新:

检查了GridView和ListView代码,发现这两个控件之间有所不同。

GridView使用TemplateField而不是BoundField作为DDL。

<asp:TemplateField HeaderText="UnitID" SortExpression="UnitID">  <EditItemTemplate><asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource5"  DataTextField="Unit" DataValueField="UnitID" SelectedValue='<%# Bind("UnitID") %>'> </asp:DropDownList></EditItemTemplate>;

和一个ItemTemplate:

<ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("UnitID") %>'></asp:Label></ItemTemplate> </asp:TemplateField>

我刚刚将DDL添加到ListView的EditItemTemplate:

<EditItemTemplate> <td><asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource7"  DataTextField="Unit" DataValueField="UnitID" SelectedValue='<%# Bind("UnitID") %>' AutoPostBack="True"></asp:DropDownList></td>

ListView的ItemTemplate显示:    &LT; ItenTemplate&GT; '/&gt;

显然,我的ListView缺少Text ='&lt;%#Bind(“UnitID”)%&gt;的一些代码。我应该在哪里将此ItemTemplate添加到ListView?

编辑2:

我手动将其添加到

<asp:ListView ID="ListView2"

         runat="server"

         DataKeyNames="EmployeeID"

         DataSourceID="SqlDataSource3"

         InsertItemPosition="LastItem">

  <AlternatingItemTemplate>

             <tr style="">

                 <td>

                     <asp:Button ID="EditButton"

                         runat="server" CommandName="Edit"

                         Text="Edit" />

                 </td>

                 <td>

                     <asp:Label ID="EmployeeIDLabel"

                         runat="server"

                         Text='<%# Eval("EmployeeID") %>' />

                 </td>

                 <td>

                     <asp:Label ID="OOLIDLabel"

                         runat="server"

                         Text='<%# Eval("OOLID") %>' />

                 </td>

                 ....

             </tr>

</AlternatingItemTemplate>

<EditItemTemplate>

             <tr style="">

                 <td>

                     <asp:Button ID="UpdateButton"

                         runat="server" CommandName="Update"

                         Text="Update" />

                     <asp:Button ID="CancelButton"

                         runat="server" CommandName="Cancel"

                         Text="Cancel" />

                 </td>

                 <td>

                     <asp:Label ID="EmployeeIDLabel1"

                         runat="server"

                         Text='<%# Eval("EmployeeID") %>' />

                 </td>

                 <td>

                     <asp:TextBox ID="OOLIDTextBox"

                         runat="server"

                         Text='<%# Bind("OOLID") %>' />

                 </td>



                 <td>

          <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource7"

                 DataTextField="Unit" DataValueField="UnitID" SelectedValue='<%# Bind("UnitID") %>' AutoPostBack="True">

                 </asp:DropDownList>

                 </td>

                 <!--<td>

                     <asp:TextBox ID="UnitIDTextBox"

                         runat="server"

                         Text='<%# Bind("UnitID") %>' />

                </td>-->



  </EditItemTemplate>

         <EmptyDataTemplate>

             <table runat="server" style="">

                 <tr>

                     <td>

                         No data was returned.</td>

                 </tr>

             </table>

         </EmptyDataTemplate>

         <InsertItemTemplate>

             <tr style="">



             </tr>

         </InsertItemTemplate>

         <ItemTemplate>

             <tr style="">

                 <td>

                     <asp:Button ID="EditButton"

                         runat="server" CommandName="Edit"

                         Text="Edit" />

                 </td>

                 <td>

                     <asp:Label ID="EmployeeIDLabel"

                         runat="server"

                         Text='<%# Eval("EmployeeID") %>' />

                 </td>

                 <td>

                     <asp:Label ID="OOLIDLabel"

                         runat="server"

                         Text='<%# Eval("OOLID") %>' />

                 </td>

                 ...

             </tr>

         </ItemTemplate>

         <LayoutTemplate>

             ...

         </LayoutTemplate>

         <SelectedItemTemplate>

             <tr style="">

                 <td>

                     <asp:Button ID="EditButton"

                         runat="server" CommandName="Edit"

                         Text="Edit" />

                 </td>

                 <td>

                     <asp:Label ID="EmployeeIDLabel"

                         runat="server"

                         Text='<%# Eval("EmployeeID") %>' />

                 </td>

                 <td>

                     <asp:Label ID="OOLIDLabel"

                         runat="server"

                         Text='<%# Eval("OOLID") %>' />

                 </td>

                 ...

         </SelectedItemTemplate>

     </asp:ListView>

     <asp:SqlDataSource ID="SqlDataSource3"

         runat="server"

         ConnectionString="<%$ ConnectionStrings:EmployeeTestConnectionString %>"

         DeleteCommand="DELETE FROM [Employee] WHERE [EmployeeID] = @EmployeeID"

         InsertCommand="INSERT INTO [Employee] ([OOLID], ) VALUES (@OOLID, @LASTNAME, "

         SelectCommand="SELECT * FROM [Employee] WHERE ([EmployeeID] = @EmployeeID)"

         UpdateCommand="UPDATE [Employee] SET [OOLID] = @OOLID, [.... WHERE [EmployeeID] = @EmployeeID">

         <DeleteParameters>

             <asp:Parameter Name="EmployeeID"

                 Type="Int32" />

         </DeleteParameters>

         <InsertParameters>

             <asp:Parameter Name="OOLID"

                 Type="Int32" />

             ....

         </InsertParameters>

         <SelectParameters>

             <asp:ControlParameter ControlID="GridView1"

                 Name="EmployeeID"

                 PropertyName="SelectedValue"

                 Type="Int32" />

         </SelectParameters>

         <UpdateParameters>

             <asp:Parameter Name="OOLID"

                 Type="Int32" />

             <asp:Parameter Name="LASTNAME"

                 Type="String" />

             ....

         </UpdateParameters>

     </asp:SqlDataSource>

     <asp:SqlDataSource ID="SqlDataSource7"

         runat="server"

         ConnectionString="<%$ ConnectionStrings:EmployeeTestConnectionString %>"

         SelectCommand="SELECT [UnitID], [Unit] FROM [Unit] order by [Unit] ASC">

     </asp:SqlDataSource>

0 个答案:

没有答案