2014-08-30 4 views
0

의 데이터 검색 및 필터링이 코드를 사용하여 2 테이블 (내부 조인)과 연결되지만 아무 일도 일어나지 않는 DataGridView의 데이터 검색 및 필터링! 여기 는 코드입니다 :DataGridView C#

DataTable dt; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string sql = @"SELECT Invoice.[InvoiceID], Invoice.[CustomerID], Invoice.[Date], Invoice.[Amount], Invoice.[Paid], Invoice.[Rest], Invoice.[PaymentType], Invoice.[Shipped], Customer.[CustomerID], Customer.[Name], Customer.[Tell], Customer.[Address], Customer.[Comment] FROM [Invoice] INNER JOIN [Customer] ON Invoice.[CustomerID] = Customer.[CustomerID]"; 
     using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RechnungConnectionString"].ConnectionString)) 
     using (var cmd = new SqlCommand(sql, conn)) 
     { 
      conn.Open(); 
      SqlDataAdapter sda = new SqlDataAdapter(); 
      sda.SelectCommand = cmd; 
      dt = new DataTable(); 
      sda.Fill(dt); 
      cmd.ExecuteNonQuery(); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
      conn.Close(); 
     } 
    } 
    protected void TextBox1_TextChanged(object sender, EventArgs e) 
    { 
      DataView DV = new DataView(dt); 
      DV.RowFilter = string.Format("Name LIKE '%{0}%'", TextBox1.Text); 
      GridView1.DataSource = DV; 

    } 

이것은 텍스트 상자이며 GRIDVIEW Asp.net 형태 :

<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged"></asp:TextBox> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="InvoiceID" CssClass="table table-striped table-bordered" AllowSorting="true"> 

몇 가지 중 하나가이 문제를 해결 또는 검색 및 필터 데이터에 대한 더 나은 방법이 방법을 알고있는 경우 GridView plz 도와주세요! 귀하의 텍스트 상자 변경 이벤트가 발사되지만를 Page_Load의 불을 다시 그리드를로드한다

답변

0

이 시도 : 당신은 여전히 ​​문제가 있다면

SqlDataAdapter sda = new SqlDataAdapter(); 
DataTable dt; 
SqlCommand cmd2 = new SqlCommand(); 

protected void Page_Load(object sender, EventArgs e) 
    { 
     string sql = @"SELECT Invoice.[InvoiceID], Invoice.[CustomerID], Invoice.[Date], Invoice.[Amount], Invoice.[Paid], Invoice.[Rest], Invoice.[PaymentType], Invoice.[Shipped], Customer.[CustomerID], Customer.[Name], Customer.[Tell], Customer.[Address], Customer.[Comment] FROM [Invoice] INNER JOIN [Customer] ON Invoice.[CustomerID] = Customer.[CustomerID]"; 
     using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RechnungConnectionString"].ConnectionString)) 
     using (var cmd = new SqlCommand(sql, conn)) 
     { 
      conn.Open(); 
      sda.SelectCommand = cmd; 
      dt = new DataTable(); 
      sda.Fill(dt); 
      cmd.ExecuteNonQuery(); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
      conn.Close(); 
     } 
    } 

protected void TextBox1_TextChanged(object sender, EventArgs e) 
    { 
      dt = new DataTable(); 

      cmd2 = 
       new SqlCeCommand(string.Format(@"SELECT Invoice.[InvoiceID], Invoice.[CustomerID], Invoice.[Date], Invoice.[Amount], Invoice.[Paid], Invoice.[Rest], Invoice.[PaymentType], Invoice.[Shipped], Customer.[CustomerID], Customer.[Name], Customer.[Tell], Customer.[Address], Customer.[Comment] FROM [Invoice] INNER JOIN [Customer] ON Invoice.[CustomerID] = Customer.[CustomerID] where Name LIKE '%{0}%'", TextBox1.Text)); 
      try 
      { 
       adp1.SelectCommand = cmd2; 
       adp1.Fill(dt); 
GridView1.DataSource = dt; 
      } 
      finally 
      { 
       con.Close(); 
      } 

    } 

알려주세요. (Movafagh 바시)

+0

나는 이것을 시도 하나 아무 것도하지 않는다. :) 그리고 TextChanged에서 (adp1은 sda) 또는 Sqlcommand처럼이 코드에 약간의 오류가있다! (Shoma ham hamintoor) –

+0

U는 그 변수에 connectionstring 변수가 있다고 가정합니다. 그러나 @SURFThru가 말했듯이, page_load 이벤트가 발생할 수 있습니다. 확인해 봐. –

+0

그 검색 텍스트 상자를 수정하지만 지금 문제는 텍스트 상자에 쓸 때 Enter 키를 눌러야한다는 것입니다. KeyPress (Windows Form에서)와 같은 이벤트 처리기를 asp.net에서 사용할 수 있습니다. –

0

마지 아르. 디버그를하면 페이지로드가 다시 발생하고 필터가 수행하지 않은 것처럼 보이게됩니다.

타사의 그리드 컨트롤을 구현하는 예산이 있다면 많은 필터링 기능을 추가 할 수 있습니다. 언젠가는 표준 그리드를 사용하지 않았으며 모든 사이트에서 DevExpress 그리드를 사용합니다.

DevExpress Grid에서 강력한 필터링을 받으려면 this link을 살펴보십시오.

제품을 저장하는 데 드는 시간과 최종 사용자에게 제공 할 수있는 멋진 기능이 모두 제공됩니다.

+0

나는 page_load없이 내 코드를 시도하고 gridView에 데이터를로드하지만 그 역시 작동하지 않는다! DevExpress는 비싸다 나는 작은 돈을 위해이 웹 애플리케이션을 작성하고있다. :) –