none
請問如何得到comboBox1所選取的值,並將選取得值轉成字串用於篩選comboBox2的值? RRS feed

  • 問題

  • 各位前輩好,我現在能將mdb檔匯入後跑出樓層comboBox1的內容,現在想將comboBox1所選取的值轉成字串用於篩選comboBox2的值,但一直出現錯誤,請問我該改進哪裡,謝謝。

     private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
            {
                
                string openFilePath = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " + openFileDialog1.FileName.ToString();//檔案路徑
                OleDbConnection myConnection = new OleDbConnection(openFilePath);
                
                
                {
                    string selectStory = "SELECT DISTINCT Story FROM [Frame Assignments Summary]";
                    OleDbCommand comboBox1Command = new OleDbCommand(selectStory, myConnection);
                    myConnection.Open();
                    OleDbDataReader comboBox1Reader = comboBox1Command.ExecuteReader();
                    try
                    {
                        while (comboBox1Reader.Read())
                        {
                            comboBox1.Items.Add(comboBox1Reader.GetValue(0));
                            
                        }
                    }
                    finally
                    {
                        comboBox1Reader.Close();
                        myConnection.Close();
                    }
                   
                }
                
                {
                    string selectItem = comboBox1.SelectItem;
                    string selectLine = "SELECT Line FROM [Frame Assignments Summary] WHERE Story IN ('" + selectItem + "')";
                    OleDbCommand comboBox2Command = new OleDbCommand(selectLine, myConnection);
                    myConnection.Open();
                    OleDbDataReader comboBox2Reader = comboBox2Command.ExecuteReader();
                    try
                    {
                        while (comboBox2Reader.Read())
                        {
                            comboBox2.Items.Add(comboBox2Reader.GetValue(0));
                        }
                    }
                    finally
                    {
                        comboBox2Reader.Close();
                        myConnection.Close();
                    }
    
                }
            }


    2017年9月7日 上午 08:21

解答

  • 將以下的程式碼移至ComboBox1的SelectedIndexChanged事件處理程序, 然後再執行看看:

    {
                    string selectItem = comboBox1.SelectItem;
                    string selectLine = "SELECT Line FROM [Frame Assignments Summary] WHERE Story IN ('" + selectItem + "')";
                    OleDbCommand comboBox2Command = new OleDbCommand(selectLine, myConnection);
                    myConnection.Open();
                    OleDbDataReader comboBox2Reader = comboBox2Command.ExecuteReader();
                    try
                    {
                        while (comboBox2Reader.Read())
                        {
                            comboBox2.Items.Add(comboBox2Reader.GetValue(0));
                        }
                    }
                    finally
                    {
                        comboBox2Reader.Close();
                        myConnection.Close();
                    }
    
                }
    

    • 已標示為解答 ChrisChun 2017年9月9日 上午 08:59
    2017年9月7日 上午 08:41
  • Hi ChrisChun,

    請問您是有出現錯誤代碼,還是單純沒反應,程式功能跑不出來?

    可以先參考一下這篇 : 

    1.Cascading ComboBox in C-Sharp.Net

    2.這一篇比較像您的寫法

       Cascading ComboBox In Windows Application Using C#

    希望可以幫助到您 :)


    請記得將對您有幫助的回覆"標示為解答"以幫助其他尋找解答及參與社群討論的朋友們。

     

    Please remember to click Mark as Answer on the post that helps you.
    This can be beneficial to other community members reading the thread.

    • 已標示為解答 ChrisChun 2017年9月7日 下午 02:28
    2017年9月7日 上午 10:11

所有回覆

  • 將以下的程式碼移至ComboBox1的SelectedIndexChanged事件處理程序, 然後再執行看看:

    {
                    string selectItem = comboBox1.SelectItem;
                    string selectLine = "SELECT Line FROM [Frame Assignments Summary] WHERE Story IN ('" + selectItem + "')";
                    OleDbCommand comboBox2Command = new OleDbCommand(selectLine, myConnection);
                    myConnection.Open();
                    OleDbDataReader comboBox2Reader = comboBox2Command.ExecuteReader();
                    try
                    {
                        while (comboBox2Reader.Read())
                        {
                            comboBox2.Items.Add(comboBox2Reader.GetValue(0));
                        }
                    }
                    finally
                    {
                        comboBox2Reader.Close();
                        myConnection.Close();
                    }
    
                }
    

    • 已標示為解答 ChrisChun 2017年9月9日 上午 08:59
    2017年9月7日 上午 08:41
  • 我把它改成以下這樣還是沒反應 =( 感謝你
            private void ComboBox1_SelectedIndexChanged(object sender,EventArgs e)
            {
                string openFilePath = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " + openFileDialog1.FileName.ToString();//檔案路徑
                OleDbConnection myConnection = new OleDbConnection(openFilePath);
                s = Convert.ToString(comboBox1.SelectedItem);
                string selectLine = "SELECT Line FROM [Frame Assignments Summary] WHERE Story IN ('" + s + "')";
                OleDbCommand comboBox2Command = new OleDbCommand(selectLine, myConnection);
                myConnection.Open();
                OleDbDataReader comboBox2Reader = comboBox2Command.ExecuteReader();
                try
                {
                    while (comboBox2Reader.Read())
                    {
                        comboBox2.Items.Add(comboBox2Reader.GetValue(0));
                    }
                }
                finally
                {
                    comboBox2Reader.Close();
                    myConnection.Close();
                }
            }

    2017年9月7日 上午 09:00
  • Hi ChrisChun,

    請問您是有出現錯誤代碼,還是單純沒反應,程式功能跑不出來?

    可以先參考一下這篇 : 

    1.Cascading ComboBox in C-Sharp.Net

    2.這一篇比較像您的寫法

       Cascading ComboBox In Windows Application Using C#

    希望可以幫助到您 :)


    請記得將對您有幫助的回覆"標示為解答"以幫助其他尋找解答及參與社群討論的朋友們。

     

    Please remember to click Mark as Answer on the post that helps you.
    This can be beneficial to other community members reading the thread.

    • 已標示為解答 ChrisChun 2017年9月7日 下午 02:28
    2017年9月7日 上午 10:11
  • 我覺得第二篇有幫助到我,謝謝您的解答。
    2017年9月7日 下午 02:28