我想从的ComboBox
的基础上加载数据库中的数据。我有2 controls
,cbDocName
和tbDocFee
意思是当我从cbDocName
中选择Doc时,Doc费用应该加载到tbDocFee中。以下是代码和图像附着如何基于ComboBox选择的更改事件从数据库中将数据提取到文本框中
private void cbDocsName_SelectedIndexChanged(object sender, EventArgs e)
{
GetDocFees();
}
public void GetDocFees()
{
string CS = ConfigurationManager.ConnectionStrings["MyCon"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("SELECT DocFees FROM AddDoctor WHERE [email protected]", con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@ID", cbDocsName.Text);
con.Open();
tbDocFees.Text = cmd.ExecuteScalar().ToString();
}
}
上面的代码完美地工作,而是表示cbDocName DOCNAME的,它显示的DocID作为DisplayMember
。这里是更新form load event
private void frmDocAppoinment_Load(object sender, EventArgs e)
{
cbDocsName.DataSource = DocAppoinmentSystem.Utillities.clsNewApp.LoadDocNameComboBox();
cbDocsName.DisplayMember = "DocName";
cbDocsName.ValueMember = "ID";
}
代码:LoadDocNameComboBox()代码如下
public static DataTable LoadDocNameComboBox()
{
DataTable dtCampus = new DataTable();
string CS = ConfigurationManager.ConnectionStrings["MyCon"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
using (SqlCommand cmd = new SqlCommand("SELECT ID,DocName FROM AddDoctor WHERE DocStatus='PRESENT'", con))
{
cmd.CommandType = CommandType.Text;
con.Open();
SqlDataReader r = cmd.ExecuteReader();
dtCampus.Load(r);
}
}
return dtCampus;
}
注:cbDocName.SelectedIndex, cbDocName.SelectedText, cbDocName.SelectedItem
在所有的这些,我得到一个错误
对象未设置到一个对象的实例
可能有助于了解什么'LoadDocNameComboBox'返回,确切地说。 – DonBoitnott
显示“LoadDocNameComboBox”的功能。 – Codexer
{LoadDocNameComboBox}从数据库返回DocName和DocID并填充组合框 –