无法在ObjectDataSource中使用ControlParameters

时间:2014-07-08 00:14:56

标签: asp.net objectdatasource

我正在尝试使用ASP.NET Web窗体中的ListView和ObjectDataSource创建一个简单的CRUD。我无法在ObjectDataSource中使用ControlParameters来插入数据。

以下是我在aspx文件中定义ObjectDataSource的方法。

<asp:ObjectDataSource ID="ObjectDataSource1" 
        runat="server"
        TypeName="BookModel"
        InsertMethod="AddBook"
        UpdateMethod="EditBook"
        DeleteMethod="DeleteBook"
        SelectMethod="GetAllBooks">
        <InsertParameters>
        <asp:ControlParameter Name="BookName" ControlID="form1$BookName" PropertyName="Text" Type="String" />
        <asp:ControlParameter Name="AuthorID" ControlID="form1$AuthorID" PropertyName="Text" Type="Int32" />
        <asp:ControlParameter Name="SubjectID" ControlID="form1$SubjectID" PropertyName="Text" Type="Int32" />
        <asp:ControlParameter Name="Copies" ControlID="form1$Copies" PropertyName="Text" Type="Int32" />
        </InsertParameters>
    </asp:ObjectDataSource>

这是我的ListView。

<asp:ListView ID="ListView1"
    runat="server"
    DataSourceID="ObjectDataSource1"
    InsertItemPosition="LastItem"
    DataKeyNames="BookID"
    >

    <ItemTemplate>

        <%# Eval("BookID") %>,
        <%# Eval("BookName") %>,
        <%# Eval("AuthorID") %>,
        <%# Eval("SubjectID") %>,
        <%# Eval("Copies") %>&nbsp;&nbsp;&nbsp;
        <asp:Button ID="Button1" CommandName="Delete" Text="Delete" runat="server" />
        <asp:Button ID="Button2" CommandName="Edit" Text="Edit" runat="server" />
        <br />
    </ItemTemplate>



    <InsertItemTemplate>

        <br />
        Book name: <asp:TextBox ID="BookName" runat="server" Text='<%# Bind("BookName") %>'></asp:TextBox><br />
        Subject: <asp:TextBox ID="SubjectID" runat="server" Text='<%# Bind("SubjectID") %>'></asp:TextBox><br />
        Author: <asp:TextBox ID="AuthorID" runat="server" Text='<%# Bind("AuthorID") %>'></asp:TextBox><br />
        Copies: <asp:TextBox ID="Copies" runat="server" Text='<%# Bind("Copies") %>'></asp:TextBox><br />
        <asp:Button ID="SubmitButton" runat="server" Text="Add" CommandName="Insert" />

    </InsertItemTemplate>

</asp:ListView>

每当我运行我的应用程序并尝试插入新记录时,我都会收到此错误

无法在ControlParameter'BookName'中找到控件'form1 $ BookName'。

我的ListView和ObjectDataSource包含在相同的表单中,该表单具有id form1。

1 个答案:

答案 0 :(得分:0)

我从ObjectDataSource定义中删除了InsertParameters。

<asp:ObjectDataSource ID="ObjectDataSource1" 
    runat="server"
    TypeName="BookModel"
    InsertMethod="AddBook"
    UpdateMethod="EditBook"
    DeleteMethod="DeleteBook"
    SelectMethod="GetAllBooks">
</asp:ObjectDataSource>