2012-04-17 12 views
0

フィルタはmyTicketsSubmitButtonでは機能しますが、allTicketsSubmitButtonでは機能しません。コードは同じですが、私はなぜそれが1つの方法で動作し、別の方法では動作しないのか分かりません。私は、Visual Studio 2010BindingSourceフィルタが機能しない

private void myTicketsSubmitButton_Click(object sender, EventArgs e) 
    { 
     String sqlQuery = "SELECT u.CallerName, t.* FROM users u INNER JOIN tickets t ON u.id = t.user WHERE u.CallerName = '" + Environment.UserName.ToLower() + "'"; 
     GetData(sqlQuery); 

     if (myTicketsAllRadioButton.Checked) 
     { 
      //GetData(sqlQuery); 
      ticketsBindingSource.Filter = "ProblemStatus LIKE '%'"; 
     } 

     if (myTicketsClosedRadioButton.Checked) 
     { 
      //GetData(sqlQuery); 
      ticketsBindingSource.Filter = "ProblemStatus = 'Closed'"; 
     } 

     if (myTicketsOpenRadioButton.Checked) 
     { 
      //GetData(sqlQuery); 
      ticketsBindingSource.Filter = "ProblemStatus = 'Open'";     
     } 
    } 

    private void allTicketsSubmitButton_Click(object sender, EventArgs e) 
    { 
     String sqlQuery = "SELECT u.CallerName, t.* FROM users u INNER JOIN tickets t ON u.id = t.user"; 
     GetData(sqlQuery); 

     if (myTicketsAllRadioButton.Checked) 
     { 
      //GetData(sqlQuery); 
      ticketsBindingSource.Filter = "ProblemStatus LIKE '%'"; 
     } 

     if (myTicketsClosedRadioButton.Checked) 
     { 
      //GetData(sqlQuery); 
      ticketsBindingSource.Filter = "ProblemStatus = 'Closed'"; 
     } 

     if (myTicketsOpenRadioButton.Checked) 
     { 
      //GetData(sqlQuery); 
      ticketsBindingSource.Filter = "ProblemStatus = 'Open'";    
     } 
    } 

    private void GetData(string selectCommand) 
    { 
     OleDbDataAdapter dataAdapter = new OleDbDataAdapter(); 
     BindingSource bindingSource1 = new BindingSource(); 
     try 
     { 
      // Specify a connection string. Replace the given value with a 
      // valid connection string for a Northwind SQL Server sample 
      // database accessible to your system. 
      String connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\testdb.accdb"; 

      // Create a new data adapter based on the specified query. 
      dataAdapter = new OleDbDataAdapter(selectCommand, connectionString); 

      // Create a command builder to generate SQL update, insert, and 
      // delete commands based on selectCommand. These are used to 
      // update the database. 
      OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(dataAdapter); 

      // Populate a new data table and bind it to the BindingSource. 
      DataTable table = new DataTable(); 
      table.Locale = System.Globalization.CultureInfo.InvariantCulture; 
      dataAdapter.Fill(table); 
      bindingSource1.DataSource = table; 
      ticketsBindingSource = bindingSource1; 

      // Resize the DataGridView columns to fit the newly loaded content. 
      //ticketsDataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);     

      ticketsDataGridView.DataSource = bindingSource1; 
     } 
     catch(OleDbException) 
     { 
      MessageBox.Show("To run this example, replace the value of the connectionString variable with a connection string that is valid for your system."); 
     } 
    } 

でのWinFormsとC#を使用しています

私は6つのラジオボタンを持っています。 allTicketsのためにそれらの

3はmyTickets --open --Closed それらの--All

3のためのものです --open --Closed - すべて

I myTicketsグループのラジオボタンをクリックするとすべて動作します

私はコードに少し変更を加えましたが、allTicketsSubmitButtonはOpenまたはAllチケットのすべてのチケットを表示しません。

データベースは比較的小さいので、私はすぐに物事をテストできます。

私は5つのエントリ 2開き2が他のユーザに割り当てられている進捗

2エントリ内 1作業を閉じている(したがって、それらの3がmyTicketsあります)。

私は1つが開いている場合 (オープンはオープンチケットの一覧が表示されます両方)私は同じことに

をmyTicketsとallTicketsのラジオボタンを設定した場合にのみ、奇妙な

何か結果が表示され、正しくに気づき、もう1つは閉じても何も起こらない

+0

働いていないでしょうか?エラーが出ていますか?データがグリッドを満たしていますか? – Taryn

答えて

0

6つのラジオボタンがある場合は、myTicketsに3つとallTicketsに3つの場合、allTicketsボタンのクリックイベントでmyTicketsがチェックされるのはなぜですか?

private void allTicketsSubmitButton_Click(object sender, EventArgs e) 
    { 
     String sqlQuery = "SELECT u.CallerName, t.* FROM users u INNER JOIN tickets t ON u.id = t.user"; 

     if (myTicketsAllRadioButton.Checked) 
     { 
      GetData(sqlQuery); 
      ticketsBindingSource.Filter = "ProblemStatus LIKE '%'"; 
     } 

     if (myTicketsClosedRadioButton.Checked) 
     { 
      GetData(sqlQuery); 
      ticketsBindingSource.Filter = "ProblemStatus = 'Closed'"; 
     } 

     if (myTicketsOpenRadioButton.Checked) 
     { 
      GetData(sqlQuery); 
      ticketsBindingSource.Filter = "ProblemStatus = 'Open'";    
     } 
    } 

TO:

私はあなたからあなたのコードを変更する必要があると思う

private void allTicketsSubmitButton_Click(object sender, EventArgs e) 
    { 
     String sqlQuery = "SELECT u.CallerName, t.* FROM users u INNER JOIN tickets t ON u.id = t.user"; 
     GetData(sqlQuery); // move this here, you only need this in one place 

     if (allTicketsAllRadioButton.Checked) 
     { 
      ticketsBindingSource.Filter = "ProblemStatus LIKE '%'"; 
     } 

     if (allTicketsClosedRadioButton.Checked) 
     { 
      ticketsBindingSource.Filter = "ProblemStatus = 'Closed'"; 
     } 

     if (allTicketsOpenRadioButton.Checked) 
     { 
      ticketsBindingSource.Filter = "ProblemStatus = 'Open'";    
     } 
    } 
+0

私はあなたの推薦にコードを変更しましたが、同じ問題がまだあります –

+0

エラーメッセージが表示されますか? – Taryn

+0

イベントのクリックでラジオボタンの名前を更新しましたか? – Taryn

関連する問題