簡體   English   中英

無法將數據加載到 ComboBox C#

[英]Can't Load Data to ComboBox C#

我在 FormLoad FormLoad Block使用以下代碼將數據插入到ComboBox

try
{
    using (SqlConnection con = new SqlConnection(conString))
    {
        SelectCategoryComboBox.Items.Clear();
        string query = "SELECT CategoryName FROM CategoryTable";
        con.Open();
        SqlDataReader sdr = new SqlCommand(query, con).ExecuteReader();
        while (sdr.Read())
        {
            SelectCategoryComboBox.Items.Add(sdr.GetValue(0).ToString());
        }

    }
}
catch
{
    StatusLabel.Text = "An error occured while loading Data";
}
finally
{
    SelectCategoryComboBox.SelectedItem = null;
    SelectCategoryComboBox.SelectedText = "Choose Category";
}

它可以完成工作。 在表單中,您可以通過從ComboBox選擇類別的名稱來創建類別和刪除這里是表單的屏幕截圖 我使用以下代碼在刪除后刪除項目並將其加載到 ComboBox。

try
{
    String conString = ConfigurationManager.ConnectionStrings["mfcdb"].ConnectionString;
    String query = "DELETE FROM CategoryTable WHERE CategoryName='" + SelectCategoryComboBox.SelectedItem.ToString() + "'";
    using (SqlConnection con = new SqlConnection(conString))
    {
        SqlCommand cmd = new SqlCommand(query, con);
        con.Open();
        cmd.ExecuteNonQuery();
    }
    StatusLabel.Text = "You have successfully deleted " + SelectCategoryComboBox.SelectedItem.ToString() + " Category";
}
catch
{
    StatusLabel.Text = "An Error occured while deleting " + SelectCategoryComboBox.SelectedItem.ToString() + " Category";
}
finally
{
    try
    {
        SelectCategoryComboBox.Items.Clear();
        String conString = ConfigurationManager.ConnectionStrings["mfcdb"].ConnectionString;
        using (SqlConnection con = new SqlConnection(conString))
        {


            string query = "SELECT CategoryName FROM CategoryTable";
            con.Open();
            SqlDataReader sdr = new SqlCommand(query, con).ExecuteReader();
            while (sdr.Read())
            {
                SelectCategoryComboBox.Items.Add(sdr.GetValue(0).ToString());
            }

        }
    }
    catch
    {
        StatusLabel.Text = "An error occured while loading Data";
    }
    finally
    {
        SelectCategoryComboBox.SelectedItem = null;
        SelectCategoryComboBox.SelectedText = "Choose Category";
    }

下面給出了創建新項目的代碼

 if (CategoryNameText.Text == "")
            {
                StatusLabel.Text = "You have to provide a name to create a category";
            }
            else
            {
                String conString = ConfigurationManager.ConnectionStrings["mfcdb"].ConnectionString;
                String query = "INSERT INTO CategoryTable(CategoryName) VALUES('" + CategoryNameText.Text + "')";
                try
                {
                    using (SqlConnection con = new SqlConnection(conString))
                    {
                        con.Open();
                        SqlCommand cmd = new SqlCommand(query, con);
                        cmd.ExecuteNonQuery();
                    }
                    StatusLabel.Text = "You have successfully created " + CategoryNameText.Text + " Category";

                    try
                    {
                        using (SqlConnection scon = new SqlConnection(conString))
                        {
                            string locQuery = "SELECT CategoryName,Categoryid FROM CategoryTable";
                            SqlDataAdapter da = new SqlDataAdapter(locQuery, scon);
                            scon.Open();
                            DataSet ds = new DataSet();
                            da.Fill(ds, "CategoryTable");
                            SelectCategoryComboBox.ValueMember = "Categoryid";
                            SelectCategoryComboBox.DisplayMember = "CategoryName";
                            SelectCategoryComboBox.DataSource = ds.Tables["CategoryTable"];
                        }
                    }
                    catch
                    {
                        Thread.Sleep(3000);
                        StatusLabel.Text = "An Error Occured while Loading Data!";
                    }
                    finally
                    {
                        SelectCategoryComboBox.SelectedItem = null;
                        SelectCategoryComboBox.SelectedText = "Choose Category";
                    }
                    CategoryNameText.Focus();
                }
                catch
                {
                    Thread.Sleep(3000);
                    StatusLabel.Text = ("An ERROR occured While creating category!");
                }
                finally
                {
                    CategoryNameText.Text = "Enter Category Name";
                }

            }
        }

這段代碼完美地刪除了項目。但是如果我刪除了一個已經在ComboBox ,它會完成工作,即將剩余的項目刪除並將剩余的項目加載到ComboBox ,如果我創建了一個項目,並在關閉表單之前刪除了它,它會刪除該項目。但無法加載剩余的項目。它在刪除之前顯示ComboBox已經存在的所有項目。 如果你能幫我解決這個問題,那將是一個很大的幫助。 這里SelectCategoryComboBoxComboBox的名稱。

我發現問題出現在下面的句子中。

String query = "INSERT INTO CategoryTable(CategoryName) VALUES('" + CategoryNameText.Text + "')";

我有兩個解決方案。

首先,請為其他字段設置允許空值。 像下面這樣: 在此處輸入圖片說明

其次,可以用下面的代碼替換原來的代碼。

string query = string.Format("INSERT INTO Student(CategoryName, CategoryId, Age) VALUES('{0}','{1}','{2}')",textBox1.Text,textBox2.Text,textBox3.Text);

我發現出了什么問題...更改以下代碼

using (SqlConnection scon = new SqlConnection(conString))
                        {
                            string locQuery = "SELECT CategoryName,Categoryid FROM CategoryTable";
                            SqlDataAdapter da = new SqlDataAdapter(locQuery, scon);
                            scon.Open();
                            DataSet ds = new DataSet();
                            da.Fill(ds, "CategoryTable");
                            SelectCategoryComboBox.ValueMember = "Categoryid";
                            SelectCategoryComboBox.DisplayMember = "CategoryName";
                            SelectCategoryComboBox.DataSource = ds.Tables["CategoryTable"];
                        } 

using (SqlConnection con = new SqlConnection(conString))
                        {
                            SelectCategoryComboBox.Items.Clear();
                            string squery = "SELECT CategoryName FROM CategoryTable";
                            con.Open();
                            SqlDataReader sdr = new SqlCommand(squery, con).ExecuteReader();
                            while (sdr.Read())
                            {
                                SelectCategoryComboBox.Items.Add(sdr.GetValue(0).ToString());
                            }

                        }

它對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM