无法在ObjectDataSource中使用ControlParameters [英] Cannot use ControlParameters in ObjectDataSource

查看:73
本文介绍了无法在ObjectDataSource中使用ControlParameters的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



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





 <   asp:ObjectDataSource     ID   = < span class =code-keyword> ObjectDataSource1  

< span class =code-attribute> runat = server

< span class =code-attribute> TypeName = BookModel

InsertMethod = AddBook

< span class =code-attribute> UpdateMethod = EditBook

DeleteMethod = DeleteBook

SelectMethod = GetAllBooks >
< InsertParameters >
< asp:ControlParameter 名称 = BookName ControlID = form1 $ BookName PropertyName = 文本 类型 = 字符串 / >
< asp:ControlParameter 名称 = AuthorID ControlID = form1 $ AuthorID PropertyName = Text 类型 = < span class =code-keyword> Int32 / >
< asp:ControlParameter 名称 = SubjectID ControlID = form1 $ SubjectID PropertyName = 文字 类型 = Int32 / > ;
< asp:ControlParameter 名称 = 复制 ControlID = form1 $ Copies PropertyName = 文字 输入 = Int32 / >
< / InsertParameters >
< / asp:ObjectDataSource >









这是我的ListView。





 <   asp:ListView     ID   =  ListView1  

runat = server

DataSourceID = ObjectDataSource1

InsertItemPosition = LastItem

DataKeyNames = BookID

>

< ItemTemplate >

<% #Eval( BookID%>
<% #Eval(< span class =code-string> BookName%>
<% #Eval( AuthorID%>
< ;% #Eval( SubjectID%>
<% #Eval( 复制%> & nbsp;& nbsp;& nbsp;
< asp:按钮 ID = Button1 CommandName = 删除 文字 = 删除 runat < span class =code-keyword> = server / >
< asp:按钮 ID = Button2 CommandName = 编辑 文字 = 编辑 runat = server / >
< br / >
< / ItemTemplate > ;



< InsertItemTemplate >

< br / >
图书名称:< asp:TextBox ID = BookName runat = server 文本 =' <% #Bind( BookName%> ' > < / asp:TextBox > < br < span class =code-attribute> / >
主题: < asp:TextBox ID = SubjectID runat = 服务器 文字 =' <% #Bind( SubjectID%> ' > < / asp:TextBox > < br / >
作者:< asp:TextBox ID = AuthorID < span class =code-attribute> runat = server
文本 =' <% #Bind( AuthorID%> ' > < / asp:TextBox > < br / >
副本:< asp:TextBox ID = 复制 runat = server 文本 =' <% #Bind( Copies%> ' > < / asp:TextBox > < br / >
< asp:按钮 < span class =code-attribute> ID = SubmitButton runat = 服务器 正文 = 添加 CommandName = 插入 / >

< / InsertItemTemplate >

< / asp:ListView >





这是我的插入方法代码



<前郎=cs> public static void AddBook( int SubjectID, int AuthorID, int 副本,字符串 BookName)
{
Book b1 = new Book {BookName = BookName,AuthorID = AuthorID,SubjectID = SubjectID,Copies = Copies};

db.Books.Add(b1);
db.SaveChanges();
}









每当我运行我的申请时尝试插入新记录,我收到此错误



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



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

解决方案

BookName PropertyName = 文字 类型 = 字符串 / < span class =code-keyword>>
< asp:ControlParameter 名称 = AuthorID ControlID = form1


AuthorID PropertyName = 文字 类型 = Int32 / >
< asp:ControlParameter 名称 = SubjectID ControlID = form1


SubjectID PropertyName = 文字 类型 = Int32 / >
< asp:ControlParameter 名称 = 复制 ControlID = form1


I am trying to make a simple CRUD using a ListView and a ObjectDataSource in ASP.NET Web Forms. I cannot use ControlParameters in my ObjectDataSource to insert data.

Here is how my ObjectDataSource is defined in the aspx file.


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





Here is my 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>



Here is my Insert method code

public static void AddBook(int SubjectID, int AuthorID, int Copies, string BookName)
{
    Book b1 = new Book { BookName = BookName, AuthorID = AuthorID, SubjectID = SubjectID, Copies = Copies };

    db.Books.Add(b1);
    db.SaveChanges();
}





Whenever I run my application and try to insert a new record, I get this error

Could not find control 'form1$BookName' in ControlParameter 'BookName'.

My ListView and ObjectDataSource are enclosed in the same form and that form has id 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


这篇关于无法在ObjectDataSource中使用ControlParameters的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆