1

ボタンを押さなくてもコンボボックスにデータを自動的に入力しようとしていますが、ドロップダウンコントロールによって.....

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
   if (comboBox1.AllowDrop == false)
   {
      SqlConnection conn = new SqlConnection("Data Source=localhost; database=KnowledgeEssentials;Trusted_Connection=yes;connection timeout=30");
      SqlDataAdapter adapter = new SqlDataAdapter("SELECT Problem FROM PROBLEMT", conn);

      DataTable dt = new DataTable();
      DataSet ds = new DataSet();

      SqlDataAdapter ad = new SqlDataAdapter();
      ad.SelectCommand = new SqlCommand("SELECT Problem FROM PROBLEMT", conn);
      ad.Fill(ds, "Problem");

      dataGridView1.DataSource = dt;
      //Biding the data with the control
      BindingSource bs = new BindingSource();
      bs.DataSource = ds;
      bs.DataMember = "Problem";

      DataGridView dvg = new DataGridView();
      this.Controls.Add(dvg);
      dvg.DataSource = bs;

      for (int i = 0; i < dt.Rows.Count; i++)
      {
          comboBox1.Items.Add(dt.Rows[i]["Problem"]);
      }
   }
   else
   {
   }
}
4

3 に答える 3

0

コンボボックスに自動的にデータを入力する方法に関する質問への回答:

             private void Form3_Load(object sender, EventArgs e)
              {
                  using (SqlConnection sc = new SqlConnection())
                   {
                    sc.ConnectionString= "database=KnowledgeEssentials;Trusted_Connection=yes;connection timeout=30";
                    sc.Open();
                    using (SqlDataAdapter sda = new SqlDataAdapter())
                     {
                       DataTable data = new DataTable();
                       sda.SelectCommand = new SqlCommand("SELECT ID, TypeProblem FROM eL_Section", sc);
                       sda.Fill(data);

                       comboBox1.ValueMember = "ID";
                       comboBox1.DisplayMember = "ID";
                       comboBox1.DataSource = data;

                       comboBox2.ValueMember = "TypeProblem";
                       comboBox2.DisplayMember = "TypeProblem";
                       comboBox2.DataSource = data;


                     }


             }

            using (SqlConnection cn = new SqlConnection())
              {
            cn.ConnectionString = "database=KnowledgeEssentials;Trusted_Connection=yes;connection timeout=30";
            cn.Open();
                using (SqlDataAdapter da = new SqlDataAdapter())
                  {
                    DataTable dat = new DataTable();
                    da.SelectCommand = new SqlCommand("SELECT UserName FROM UserT", cn);
                    da.Fill(dat);



                    comboBox3.ValueMember = "UserName";
                    comboBox3.DisplayMember = "UserName";
                    comboBox3.DataSource = dat;

                  }
              }


        // TODO: This line of code loads data into the 'knowledgeEssentialsDataSet.ProblemT' table. You can move, or remove it, as needed.
        this.problemTTableAdapter.Fill(this.knowledgeEssentialsDataSet.ProblemT);
     }
于 2012-07-31T10:43:27.653 に答える
0

あなたには a がありません}。SelectedIndexChanged がコンボボックスに入力するのに最適な場所であるとはほとんど信じていません。明らかに学習しているので、コードをボタンに配置してみてください。ボタンをクリックして正常に機能するようになったら、フォームの読み込みなど、より適切な場所を探すことができます。

また、問題は正確には何ですか?エラーになりますか?

于 2012-07-24T09:15:28.360 に答える
0

最初にデータを取得するためのメソッドを作成し、このようにコンボボックスにロードします

    protected void LoadCombo()
    {

           SqlConnection conn = new SqlConnection("Data Source=localhost;database=KnowledgeEssentials;Trusted_Connection=yes;connection timeout=30"); 
            SqlDataAdapter adapter = new SqlDataAdapter("SELECT Problem FROM PROBLEMT", conn); 
            DataSet ds = new DataSet(); 
            SqlDataAdapter ad = new SqlDataAdapter(); 
            ad.SelectCommand = new SqlCommand("SELECT Problem FROM PROBLEMT", conn); 
            ad.Fill(ds, "Problem"); 
            dataGridView1.DataSource = ds; 
            dataGridView1.DataBind(); 
        for (int X = 0; X <= ds.Tables[0].Rows.Count - 1; X++)
        { 
            comboBox1.Items.Add(ds.Tables[0].Rows[X]["Problem"].ToString()); 
        } 

}

page_load でこのメソッドを呼び出す

protected void Page_Load()
{

if(ispostback)
 {

}
else
{
 LoadCombo();

 }
}
于 2012-07-24T09:20:26.947 に答える