2016-04-12 42 views
0

如何自动或通过按钮清除应用的过滤器?DataGridView.DefaultView清除过滤器

我使用以下代码来筛选从表格DataGridViewfrPlanMain(表格1)2.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace Plan_de_lucru_1._0 
{ 
    public partial class SearchWindow : Form 
    { 
     public frPlanMain refTofrPlanMain; 

     public SearchWindow(frPlanMain f) //<<Edit made here 
     { 
      refTofrPlanMain = f; 
      InitializeComponent(); 
     } 

     private void SearchButtonW_Click(object sender, EventArgs e) 
     { 
      { 
       (refTofrPlanMain.dGVPlan.DataSource as DataTable).DefaultView.RowFilter = string.Format("Vodic = '{0}'", searchTBoxW.Text); 
       for (int i = refTofrPlanMain.dGVPlan.Rows.Count - 1; i >= 0; i--) 
       { 
        DataGridViewRow item = refTofrPlanMain.dGVPlan.Rows[i]; 
        if (item.Visible) 
        { 
         refTofrPlanMain.dGVPlan.Rows.RemoveAt(i); 
         break;      
        } 
       // 
       } 
       } 
      } 
     } 
    } 
+1

你之前问过我o关于如何删除数据,这不是过滤。现在你想要回来的数据?这将需要更多的代码更改... – Draken

+0

好吧,再次感谢您的兴趣。在我删除选定的行后,我想删除过滤器,并看到整个数据源,但没有删除的行。 –

+0

啊,好吧,误解了,看看 – Draken

回答

1
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace Plan_de_lucru_1._0 
{ 
    public partial class SearchWindow : Form 
    { 
     public frPlanMain refTofrPlanMain; 

     public SearchWindow(frPlanMain f) //<<Edit made here 
     { 
      refTofrPlanMain = f; 
      InitializeComponent(); 
     } 

     private void SearchButtonW_Click(object sender, EventArgs e) 
     { 
      (refTofrPlanMain.dGVPlan.DataSource as DataTable).DefaultView.RowFilter = string.Format("Vodic = '{0}'", searchTBoxW.Text); 
      for (int i = refTofrPlanMain.dGVPlan.Rows.Count - 1; i >= 0; i--) 
      { 
       DataGridViewRow item = refTofrPlanMain.dGVPlan.Rows[i]; 
       if (item.Visible) 
       { 
        refTofrPlanMain.dGVPlan.Rows.RemoveAt(i); 
        break;      
       } 
      } 
     } 
     private void clearFilter_onClick(object sender, EventArgs e){ 
      (refTofrPlanMain.dGVPlan.DataSource as DataTable).DefaultView.RowFilter = null;    
     } 
    } 
} 

在这里看到:How to reset bindingsource filter to nothing

+0

嗯,关于上面的代码,我应该把它放在哪里? –

+0

根据请求更新了代码,您需要创建一个按钮并将onClick事件添加到方法'clearFilter_onClick'的订阅中 – Draken

1

要清除一个DataView一个过滤器,设置将其RowFilter属性设置为空字符串

yourDataView.DefaultView.RowFilter = ""