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> 

로 등을 이용하여 SelectCommand에 문제 나는 @type을 원하기 때문에 모든 @type 때문에, 내가 제품명, 그 작품이 좋은, 에 @type을 변경하면 어떤 반환 결과를 얻을 수 없다 값은 사용자가 선택할 수있는 동적 값이되고 이며 queryString을 사용하여 전달합니다. 이런 종류의 문제를 어떻게 해결할 수 있습니까?의 asp.net의 SqlDataSource는 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 + '%')"