2011-04-25 5 views
0

예를 들어 gridview와 두 개의 텍스트 상자가 있습니다.Gridview에 대해 여러 컨트롤을 어떻게 갖고 있습니까?

하나의 텍스트 상자는 검색 할 텍스트입니다. 두 번째 텍스트 상자는 검색 할 주문 번호입니다.

내 gridview가 하나 또는 다른 하나를 기준으로 채워지 길 원합니다. 사용자가 번호 검색을 사용하고 이름 대신 이름으로 검색하는 경우 내 양식을 말하는 방법을 모르겠습니다.

도움 주셔서 감사합니다.

+0

데이터에 액세스하는 데 사용하는 SQL 쿼리를 공유 할 수 있습니까? –

+0

그냥 datatable 시각적 쿼리입니다. – johnny

+0

제출 버튼이 있거나 초점이 맞지 않을 때 필터를 걸고 싶습니다 –

답변

0

당신은 사용하여 텍스트 상자를 확인할 수 있습니다 (TextBox1.Text.Trim.Length> 0) 또는 (TextBox1.Text = "")

+0

그리고 텍스트 상자에 입력 한 값에 따라 ifelse를 사용하여 필터링을위한 논리를 사용할 수 있습니다 –

+0

texbox가 비어 있는지 확인하는 데 더 많은 허용되는 양식이 있습니다. 'String.IsNullOrEmpty (TextBox1.Text)' – pseudocoder

0

실제 필터 매개 변수를 기반으로 데이터 소스를 필터링하는 방법을 묻는 것처럼 들립니다. 이를 설명하려면 데이터 소스가 무엇인지 파악해야합니다. 어느 쪽이든, gridview 그냥 필터링 된 결과를 표시 할 것입니다, 그렇지?

데이터 원본에 SQL을 사용하는 경우 기술은 메모리에서 컬렉션을 필터링하는 것과 완전히 다릅니다. 더 많은 정보가 도움이 될 것입니다.

2

내가 몇 분이 걸렸다 때문에 아직 해결되지 OK 희망 내가 생각하는 예를 생각해 보면 네가 원하는대로 할거야.

DB 접속이 저장 프로 시저를 사용하지만 당신은 DAL와 ObjectDataSource를 사용하거나

마크 업 단지 등의 SqlDataSource에서 SQL 문을 인라인 할 수 있습니다

Product ID: 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:CompareValidator ID="CompareValidator1" ControlToValidate="TextBox1" runat="server" ErrorMessage="You must enter a number" 
    ValidationGroup="vg1" Type="Integer" Operator="DataTypeCheck"></asp:CompareValidator> 
<br /> 
Description: 
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br /> 
<asp:Button ID="cmdSearch" runat="server" Text="Search" ValidationGroup="vg1" /><br /> 
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"> 
</asp:GridView> 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="spGetProducts" 
    CancelSelectOnNullParameter="False" SelectCommandType="StoredProcedure"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="TextBox1" PropertyName="Text" DbType="String" DefaultValue="" /> 
     <asp:ControlParameter ControlID="TextBox2" PropertyName="Text" DbType="Int32" DefaultValue="" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

그리고 T-SQL에 대한 귀하의 쿼리 : 사용자가 필드 중 하나에 아무 것도 입력하지 않으면

CREATE PROCEDURE spGetProducts 
    @ProductId int = NULL 
    ,@ProductDescription nvarchar(100) = NULL 
AS 
BEGIN 
    SELECT [ProductId] 
     ,[ProductDescription] 
    FROM [Products] 
    WHERE (
     (
      (@ProductId IS NULL) 
      OR 
      ([ProductId] LIKE % + @ProductId + %) 
     ) 
     AND 
     (
      (@ProductDescription IS NULL) 
      OR 
      ([ProductDescription] LIKE % + @ProductDescription + %;) 
     ) 
    ); 
END 

의의 SqlDataSource는 여전히 인해 SqlDataSource.CancelSelectOnNullParameter = False에 결합하지 않지만 빈 매개 변수는 것입니다 ControlParameter.DefaultValue이 설정되어 쿼리와 함께 전송되지 않습니다. 그런 다음 저장 프로 시저가 NULL 값을 매개 변수에 삽입하고 기본적으로 WHERE 절에서 필터링의 해당 부분을 건너 뜁니다.

희망이 도움이됩니다.

관련 문제