Ошибка ввода строки в неправильном формате с ObjectDataSource

#c# #asp.net #sql-server-2008

#c# #asp.net #sql-server-2008

Вопрос:

У меня есть хранимая процедура для поиска в моей book таблице :

 ALTER PROCEDURE dbo.book_serchbook
    @CategoryID int,@BookTitle nvarchar(100) ,
    @CategoryName nvarchar (100) ,
    @AuthorName nvarchar(100),
    @PublisherName nvarchar(100) 
AS
    SELECT DISTINCT 
       BookTable.BookID, BookTable.BookCover
    FROM          
       BookTable 
    INNER JOIN
       CategoryTable ON CategoryTable.CategoryID = BookTable.CategoryID
    INNER JOIN 
       PublisherTable ON PublisherTable.PublisherID = BookTable.PublisherID 
    LEFT OUTER JOIN
       BookAuthorTable 
    INNER JOIN 
       AuthorTable ON AuthorTable.AuthorID = BookAuthorTable.AuthorID 
       ON BookTable.BookID = BookAuthorTable.BookID
    WHERE     
      (BookTable.CategoryID = @CategoryID) OR
      (PublisherTable.PublisherName LIKE N'%'   @PublisherName   N'%') OR
      (BookTable.BookTitle LIKE N'%'   @BookTitle   N'%') OR
      (AuthorTable.AuthorFName   ' '   AuthorTable.AuthorLName LIKE N'%'   @AuthorName   N'%') OR
      (CategoryTable.CategoryName LIKE N'%'   @CategoryName   N'%')
 

Я хочу выполнить поиск с помощью текстового поля, и я использую ObjectDataSource с помощью a GridView , чтобы показать результаты:

 <asp:ObjectDataSource ID="ObjectDataSource5" runat="server" 
     DataObjectTypeName="BookDataBaseComponent.BookDetails" 
     DeleteMethod="DeleteBook" InsertMethod="InsertBook" SelectMethod="SearchBook" 
     TypeName="BookDataBaseComponent.BookDB" UpdateMethod="UpdateBook">
     <DeleteParameters>
         <asp:Parameter Name="BookID" Type="Int32" />
     </DeleteParameters>
     <SelectParameters>
         <asp:Parameter DefaultValue="%" Name="CategoryID" Type="Int32" />
         <asp:ControlParameter ControlID="booktb" DefaultValue="%" Name="BookTitle" 
             PropertyName="Text" Type="String" />
         <asp:ControlParameter ControlID="DropDownList1" DefaultValue="%" 
             Name="CategoryName" PropertyName="SelectedValue" Type="String" />
         <asp:ControlParameter ControlID="alntb" DefaultValue="%" Name="AuthorName" 
             PropertyName="Text" Type="String" />
         <asp:ControlParameter ControlID="pubtb" DefaultValue="%" Name="PublisherName" 
             PropertyName="Text" Type="String" />
     </SelectParameters>
 </asp:ObjectDataSource>
 

Когда я запускаю проект, я получаю сообщение об ошибке :

Входная строка была в неправильном формате

Ответ №1:

как это может <asp:Parameter DefaultValue="%" Name="CategoryID" Type="Int32" /> быть допустимо? По умолчанию используется int32 с % ??

Комментарии:

1. мне нравится ваш ответ больше, чем мое предположение об ответе.

2. Хорошо, я удаляю CategoryID .. Я могу отобразить список книг, но не могу их искать

3. есть ли ошибка? Было бы полезно, если бы вы предоставили более подробную информацию о том, что вы отправляете, пример запроса… используйте debug..