更新
我有一个应用程序,它根据从另一个组合框中选择的值更新组合框。例如,状态组合框列表将根据从“国家”组合框中选择的国家来填充。状态组合框的数据源是基于 MySQL 的数据集数据库。问题是,如果首先选择一个国家,状态组合框加载正常,但如果我选择另一个国家,状态组合框填充:
System.Data.DataViewManagerListItemTypeDescriptor
我研究并发现问题与我无法更新组合框的数据源有关,但我必须这样做,因为值存储在不同的表中,并且需要不同的查询。那么,我怎样才能清除数据源/解决这个问题呢?
我已经更新了帖子以在下面添加我的代码(首先是第一个组合框的代码,它根据此处选择的值填充下一个组合框:
private void cboDisp1_SelectedIndexChanged(object sender, EventArgs e)
{
cboProd1.Enabled = false;
cboProd1.Invalidate();
string dispensation1;
dispensation1 = cboDisp1.SelectedValue.ToString();
if (dispensation1 == "1")
{
}
else
{ cboProd1.Enabled = true;
LoadDispensationCode(dispensation1,"1");
}
}
此代码显示了填充第二个组合框的部分方法:
private void LoadDispensationCode(string text_id,string line_no)
{
string txt_id=text_id;
string ln_no=line_no;
//MessageBox.Show(txt_id, "Value");
txt_id = text_id;
if (txt_id == "1")
{ }
if
(txt_id == "2")
{ LoadConsultation("1","1"); }
if(txt_id=="3")
{
LoadDrug(ln_no);
}.......
此代码显示了根据对 MySQL 数据库的查询填充数据集并加载组合框的方法。
private void LoadDrug(string line_no)
{
string ln_no;
ln_no = line_no;
//MessageBox.Show(ln_no,"value of text");
if (ln_no =="1")
{
try
{
MySqlConnection connection = HopeDB.GetConnection();
String selectStatement = "Select id,code from drugs order by id";
MySqlCommand command = new MySqlCommand(selectStatement, connection);
MySqlDataAdapter adapter = new MySqlDataAdapter();
DataSet ds = new DataSet();
adapter.SelectCommand = command;
adapter.Fill(ds, "drugs");
adapter.TableMappings.Add("Table", "drugs");
cboProd1.DisplayMember = "drugs.code";
cboProd1.ValueMember = "drugs.id";
cboProd1.DataSource = ds;
connection.Close();
}
catch (Exception ex)
{ MessageBox.Show(ex.Message, ex.GetType().ToString()); }
}
}
此代码是生成另一个数据集的另一种方法。
private void LoadVaccine(string line_no)
{
string ln_no = line_no;
if (ln_no == "1")
{
try
{
MySqlConnection connection = HopeDB.GetConnection();
String selectStatement = "Select id,code from vaccines order by id";
MySqlCommand command = new MySqlCommand(selectStatement, connection);
MySqlDataAdapter adapter = new MySqlDataAdapter();
DataSet ds = new DataSet();
adapter.SelectCommand = command;
adapter.Fill(ds, "vaccines");
adapter.TableMappings.Add("Table", "vaccines");
cboProd1.DisplayMember = "vaccines.code";
cboProd1.ValueMember = "vaccines.id";
cboProd1.DataSource = ds;
//cboStateIDFNo.Enabled =false;
//cboVisitType.Enabled =false;
//cboStatus.Enabled = false;
connection.Close();
}
catch (Exception ex)
{ MessageBox.Show(ex.Message, ex.GetType().ToString()); }
}
}
如前所述,当第一个组合框发生更改并调用另一种方法时,我需要使用来自不同数据集的新数据更新组合框的帮助。