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