【发布时间】:2013-07-08 22:20:15
【问题描述】:
我想在表单上填充一个 ComboBox。我有为我的组合框获取数据的存储过程。我的代码如下。问题是我的组合框没有被填充。当我单步执行代码时,它会到达“reader = sc.ExecuteReader();”行并且不执行 Pop_ComboBox() 中的任何后续行。存储过程返回“ID”和“描述”(仅)。我做错了什么?
private void frmInput_Load(object sender, EventArgs e)
{
//Connect to the db
this.sqlConn = new SqlConnection("Server=\"our_server";Database=\"Astra\";Trusted_Connection=yes;");
//Populate the Equipment Type Listbox
Pop_ComboBox("exec uspASTRA_GetEquipTypeList;", cboEquipType);
}
private void Pop_ComboBox(string sQuery, ComboBox NameOfcbo)
{
SqlCommand sc = new SqlCommand(sQuery, this.sqlConn);
SqlDataReader reader;
reader = sc.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Description", typeof(string));
dt.Load(reader);
NameOfcbo.ValueMember = "ID";
NameOfcbo.DisplayMember = "Description";
NameOfcbo.DataSource = dt;
}
【问题讨论】:
-
您可能在调用
ExecuteReader时遇到异常。在 Visual Studio 中,转到Debug->Exceptions,检查所有内容并再次调试。或者将调用放在 try-catch 块中并查看异常。 -
顺便说一句,你还没有打开你的连接……!! this.sqlConn.Open();
-
@Azhar - 感谢您的关注!感谢 dario 的建议。我现在看到 My SqlConn 工作不正常。
-
它现在正在工作。 Dario 将代码放在 try-catch 块中的建议帮助解决了这个问题。事实证明我没有连接到数据库。我习惯了在调试模式下发生异常时停止代码执行的 VB。现在我知道在 C# 中调试时我需要到处尝试捕获块。谢谢大家!
标签: c# winforms stored-procedures combobox populate