C# C:连接无法从DataTable填充控制元素
我正在建立一个SqlServer数据库连接,以便从表中检索数据,并将它们作为文本框和组合框中的输入提供给用户 尽管我没有收到任何异常或错误消息,但结果不是预期的,即使所有数据都返回到表中,两个组合框的行为也不符合预期。 此外,还有两个提到控制装置后面的装置被放在一个图片盒中,所有这些都放在一个面板上 这是我的代码:C# C:连接无法从DataTable填充控制元素,c#,.net,sql-server,datatable,database-connection,C#,.net,Sql Server,Datatable,Database Connection,我正在建立一个SqlServer数据库连接,以便从表中检索数据,并将它们作为文本框和组合框中的输入提供给用户 尽管我没有收到任何异常或错误消息,但结果不是预期的,即使所有数据都返回到表中,两个组合框的行为也不符合预期。 此外,还有两个提到控制装置后面的装置被放在一个图片盒中,所有这些都放在一个面板上 这是我的代码: try { using (SqlConnection con = new SqlConnection(
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!");
}
您不会通过设置组合框的文本属性来填充组合框。要正确填充组合框,必须向其中添加项目:
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());
这个小细节就是问题所在:
创建月份组合框时,我添加了以下值:
因此,数据库返回的是-6,而不是-06,这是不正确的
包含在Begging的组合框项目中
然后我更改了如下图所示的值
瞧
其他控件是否会填充数据库中的数据,而只有组合框不会填充?是的,初始化为[201620172018….]的控件年份加载得非常完美!这不是问题,问题非常微妙我添加了解决方案检查它,很有趣!