3
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
SelectCommand="SELECT ProductName, ProductPrice FROM Product WHERE (@type LIKE '%' + @seach + '%')"> 
<SelectParameters> 
    <asp:QueryStringParameter Name="type" QueryStringField="type" /> 
    <asp:QueryStringParameter Name="seach" QueryStringField="search" /> 
</SelectParameters> 
</asp:SqlDataSource> 

をLIKEを使用して値はユーザが選択できる動的値、 となり、私はqueryStringを使ってそれを渡します。この種の問題をどうやって解決するのですか?asp.netをSqlDataSource SelectCommandが問題は、私は@typeをしたいので、私は細かい商品名、その作品、 に@typeを変更した場合、すべての@type、 ために任意のリターン結果を得ることができないでのQueryString

答えて

2

この場合、動的SQLを使用できます。

変更は、ストアドプロシージャへの選択クエリは言う -

CREATE PROCEDURE usp_GetData 
    @type VARCHAR(100), 
    @search NVARCHAR(max) 
AS 
    BEGIN 

     DECLARE @SQLQuery AS NVARCHAR(max) 

     SET @SQLQuery = 'SELECT ProductName, ProductPrice FROM Product WHERE ([' 
      + @type + '] LIKE ''%' + @search + '%'')' 

     PRINT @SQLQuery 
     EXECUTE sp_executesql @sqlquery 

    END 

は、その後、あなたが見てとることができ

データを取得するために上記の手順を使用します。あなたはにいくつかのフィールドを持っている場合はhttp://www.codeproject.com/Articles/20815/Building-Dynamic-SQL-In-a-Stored-Procedure

+0

sqldatasourceで編集するだけですか? –

+1

私はそうは思わない – Thakur

0

をあなたは何かを使用するかもしれません。

"SELECT ProductName, ProductPrice FROM Product 
     WHERE (@type = 'ProductName' and ProductName LIKE '%' + @search + '%') 
      OR (@type = 'ProductDescription' and ProductDescription LIKE '%' + @search + '%') 
      OR (@type = 'Metadata' and Metadata LIKE '%' + @search + '%')"