2017-06-27 16 views
0

データがいっぱいのBindingSourceにDGridが添付されています。私はユーザーがチェックボックスを使用して、特定の列の 'Status'でデータをフィルタリングしようとしています。私は同じ列に4つの異なるデータテキストがあるので、4つのチェックボックスがあります(列は右端にあります)。明らか Picture hereBindingSourceフィルタ - 文字列から単語を削除します。

ユーザチェック/チェックを解除チェックボックスのいずれかが列にそのデータを削除/追加するグリッドにフィルタを設定します。ここで

は、チェックボックスがチェックされたときのために働く私のコードです:彼らがオフのとき

private void chkProgress_CheckedChanged(object sender, EventArgs e) 
    { 
     string filter = ""; 

     if (chkProgress.Checked) 
     { 

      filter = "Status LIKE '%Progress%'"; 

      if (chkPending.Checked) 
      { 
       filter += " Or Status LIKE '%Pending%'"; 
      } 
      else 
      { 

      } 

      if (chkCompleted.Checked) 
      { 
       filter += " Or Status LIKE '%Completed%'"; 
      } 
      else 
      { 

      } 

      if (chkArchived.Checked) 
      { 
       filter += " Or Status LIKE '%Archived%'"; 
      } 
      else 
      { 

      } 
     } 
     else 
     { 



     } 

     MessageBox.Show(filter); 
     bs.Filter = string.Format(filter); 
     refreshGrid(); 

    } 

    private void chkCompleted_CheckedChanged(object sender, EventArgs e) 
    { 
     string filter = ""; 

     if (chkCompleted.Checked) 
     { 

      filter = "Status LIKE '%Completed%'"; 

      if (chkPending.Checked) 
      { 
       filter += " Or Status LIKE '%Pending%'"; 
      } 
      else 
      { 

      } 

      if (chkProgress.Checked) 
      { 
       filter += " Or Status LIKE '%Progress%'"; 
      } 
      else 
      { 

      } 

      if (chkArchived.Checked) 
      { 
       filter += " Or Status LIKE '%Archived%'"; 
      } 
      else 
      { 

      } 
     } 
     else 
     { 



     } 

     MessageBox.Show(filter); 
     bs.Filter = string.Format(filter); 
     refreshGrid(); 
    } 

    private void chkArchived_CheckedChanged(object sender, EventArgs e) 
    { 
     if (chkArchived.Checked) 
     { 

     } 
     else 
     { 

     } 
    } 

    private void chkPending_CheckedChanged(object sender, EventArgs e) 
    { 

     string filter = ""; 

     if (chkPending.Checked) 
     { 

      filter = "Status LIKE '%Pending%'"; 

      if(chkProgress.Checked) 
      { 
       filter += " Or Status LIKE '%Progress%'"; 
      } 
      else 
      { 

      } 

      if(chkCompleted.Checked) 
      { 
       filter += " Or Status LIKE '%Completed%'"; 
      } 
      else 
      { 

      } 

      if(chkArchived.Checked) 
      { 
       filter += " Or Status LIKE '%Archived%'"; 
      } 
      else 
      { 

      } 
     } 
     else 
     { 


     } 

     MessageBox.Show(filter); 
     bs.Filter = string.Format(filter); 
     refreshGrid(); 
    } 

は、どのように私は、文字列フィルタからデータを削除するに行きますか? - =と似た何か?これについて

答えて

0

何を:私はこれが私の更新質問を参照してください使用している

if (chkPending.Checked) 
{ 
    filter += " Or Status LIKE '%Pending%'"; 
} 
else 
{ 
    filter = filter.Replace(" Or Status LIKE '%Pending%'", ""); 
} 
+0

乾杯。しかし時には、文字列を何も置き換えないように見えることもあります。これは断続的であり、6回の試みごとに約1回ではない。 – Zack

+0

置換行にブレークポイントを追加し、前後にフィルタ-varが期待どおりに機能しなくなるまで監視してください。 –

関連する問題