2012-06-18 1 views
3

(VS 2010 C# 웹 사이트) Datagrid에 표시 될 SQL 데이터베이스에서 FirstNames를 필터링하기 위해 TextBox1을 가지고 있지만 사용자 입력을 연결하는 적절한 방법을 알 수 없습니다 Datagrid 필터링을위한 WHERE 절에 "TextBox1.Text". 나는 시도했다 :C# Datagrid에 대한 WHERE 절의 텍스트 상자

SelectCommand="SELECT * FROM [TestName] WHERE ([TestFirstName] LIKE '%' + TextBox1.Text + '%')" 
+2

SQL은 대신 MS SQL-Server를 뜻하는 DBMS 아닌가요? _ 아직도 "잘못 됐어"라는게 무슨 뜻이야? 예외가 있습니까? 이 ASP.NT 또는 Winforms입니까? ADO.NET을 사용하여 데이터베이스에 연결하고 있습니까? 더 많은 코드를 표시 할 수 있습니까? –

+2

WebForms 'SqlDataSource'처럼 보입니다. 쿼리에서 컨트롤 매개 변수를 사용할 수 있어야합니다. – jrummell

답변

1
SelectCommand="SELECT * FROM [TestName] WHERE ([TestFirstName] LIKE '%' + @TestFirstName2 + '%')"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="TextBox1" Name="TestFirstName2" 
      PropertyName="Text" Type="String" /> 
    </SelectParameters> 
0

이 시도 :

SelectCommand="SELECT * FROM [TestName] WHERE ([TestFirstName] LIKE '%" + TextBox1.Text + "%')" 

주의 따옴표를 + TextBox1.Text + 주위에. 위의 예제에서는 TextBox1.Text 실제 값이 아닌 리터럴 문자열 TextBox1.Text 찾고 것 같습니다. 당신이의 SqlDataSource 또는 ObjectDataSource를 사용하여 데이터 그리드에 데이터를 바인딩하는 경우

+4

TextBox1.Text = "*; 테이블 사용자 삭제;" - 매개 변수를 사용하는 것이 더 좋습니다. – jrummell

0
SelectCommand = "SELECT * FROM [TestName] WHERE ([TestFirstName] LIKE '% " + TextBox1.Text + "%')"; 
+1

-1 매개 변수를 사용합니다. SQL은 여전히 ​​잘못된 것입니다. –

+1

어떻게 잘못 되었나요? – MMK

+1

답변을 수정했기 때문에 다운로드를 취소하십시오. –

0

, 당신은 간단한 사용중인 데이터 소스의 "FilterExpression"속성으로 WHERE 절을 넣을 수 있습니다.

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) 
     { 
      string filterstr = ""; 

      if (this.tbSearchEmpID.Text.Trim() != String.Empty) 
      { 
       filterstr += "EmpId LIKE '%" + this.tbSearchEmpID.Text.Trim() + "%'"; 
      } 

      this.ObjectDataSource1.FilterExpression = filterstr; 
     }