C#:连接无法从DataTable填充控制元素

时间:2017-01-05 18:48:59

标签: c# .net sql-server datatable database-connection

我正在建立一个SqlServer数据库连接,以便从表中检索数据并将它们作为文本框和组合框中的输入提供。

尽管事实上我没有得到任何异常或错误消息,但结果并不是预期的,即使所有数据都返回存储到表中,两个组合框也不会按预期运行。 此外,两个提到控件后面的齿轮放在一个图片框中,所有这些都在一个面板上“座位”!

这是我的代码:

            try
            {
                using (SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=SmartCity;Integrated Security=True"))
                {

                    DataTable db = new DataTable();
                    SqlDataAdapter sda = new SqlDataAdapter("SELECT card_type,card_n
                    umber,exp_month,exp_year,cvv FROM CreditCards WHERE user_id='" + ApplicationState.CurrentUser.userid.ToString() + "'", con);
                        sda.Fill(db);

                    //MessageBox Prints the missing data perfectly though!
                    MessageBox.Show("Cart Type:" + db.Rows[0][0].ToString() 
                    + "\nExpiration Month:" + db.Rows[0][2].ToString()); 

                    txtcardholername.Text = ApplicationState.CurrentUser.name + " " + ApplicationState.CurrentUser.surname;
                    cboxcardtype.Text = db.Rows[0][0].ToString();
                    txtcardnumber.Text = db.Rows[0][1].ToString();
                    cboxmonth.Text = db.Rows[0][2].ToString();
                    cboxexpyear.Text = db.Rows[0][3].ToString();
                    txtcvv.Text = db.Rows[0][4].ToString();
                }

            }
            catch (Exception)
            {
                MessageBox.Show("Something went wrong!");
            }

2 个答案:

答案 0 :(得分:1)

Solution by the original asker:

  

小细节是问题所在:

     

当我创建月份组合框时,我添加了以下值:

     

First Initialization

     

因此,数据库返回-6-作为月份 NOT -06-而不是   包括在开始组合的组合框中。

     

然后我改变了值,如下图所示。

     

After Changing the values

     

瞧:

     

enter image description here

答案 1 :(得分:0)

您没有通过设置Text属性来填充组合框。要正确填充ComboBox,您必须向其中添加项目:

comboBox1.Items.Add(db.Rows[0][0].ToString());

然后你必须选择它,你就可以了。

comboBox1.SelectedItem = comboBox1.Items.Cast<KeyValuePair<string,string>>().First(item=> item.Value == db.Rows[0][0].ToString());