C# System.Data.DataRowView如何解决它
在我的代码中,我为每个按钮创建了一个方法,例如,我有鸡肉和牛肉按钮,它们有自己的方法,当我第一次单击鸡肉按钮时,当加载表单时,它将显示在列表框中,但当我在鸡肉之后单击牛肉按钮时,它会显示一个System.ArgumentException。 这将如何解决C# System.Data.DataRowView如何解决它,c#,C#,在我的代码中,我为每个按钮创建了一个方法,例如,我有鸡肉和牛肉按钮,它们有自己的方法,当我第一次单击鸡肉按钮时,当加载表单时,它将显示在列表框中,但当我在鸡肉之后单击牛肉按钮时,它会显示一个System.ArgumentException。 这将如何解决 private void Chicken() { using (connection = new SqlConnection(connectionString)) using (SqlDataAdapter adapter
private void Chicken()
{
using (connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter("select Chicken_Name,WithOrWithout_Name,Chicken_Price from Tbl_Add a full outer join tbl_Chicken b ON b.Chicken_ID = a.Chicken_ID full outer join Tbl_WithORWithot c ON a.WorWO_ID = c.WithOrWothout_ID ; ", connection))
{
DataTable tbl_Chicken = new DataTable();
adapter.Fill(tbl_Chicken);
lst_SHowdata.DisplayMember = "Chicken_Name";
lstSHowdata2.DisplayMember = "Chicken_Price";
lst_SHowdata.ValueMember = "Chicken_ID";
lst_SHowdata.ValueMember = "Beef_ID";
lst_SHowdata.DataSource = tbl_Chicken;
lstSHowdata2.DataSource = tbl_Chicken;
}
}
private void Beef()
{
using (connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter("select Beef_Name,WithOrWithout_Name ,Beef_Price from Tbl_Add a full outer join Tbl_Beef b ON b.Beef_ID = a.Beef_ID full outer join Tbl_WithORWithot c ON a.WorWO_ID = c.WithOrWothout_ID ; ", connection))
{
DataTable tbl_Beef = new DataTable();
adapter.Fill(tbl_Beef);
lst_SHowdata.DisplayMember = "Beef_Name";
lstSHowdata2.DisplayMember = "Beef_Price";
lst_SHowdata.ValueMember = "Beef_ID";
lst_SHowdata.ValueMember = "Chicken_ID";
lst_SHowdata.DataSource = tbl_Beef;
lstSHowdata2.DataSource = tbl_Beef;
}
}
private void button1_Click(object sender, EventArgs e)
{
Chicken();
}
private void button2_Click(object sender, EventArgs e)
{
Beef();
}
我试图通过对产生异常的行进行注释来修复它
//lst_SHowdata.ValueMember = "Chicken_ID";
// lst_SHowdata.ValueMember = "Beef_ID";
已经修复了,但我需要单击按钮两次,当我第一次单击它时,它将显示在列表框中。
如何修复它并使其仅在第一次单击时显示?您会遇到错误,因为当您尝试将ValueMember设置为“Bee_Name”时,列表绑定到tbl_chicken,而tbl_chicken中没有牛肉名称,因此它会正确地抱怨
要解决此问题,请将数据源设置为tbl_beef,然后设置ValueMember。错误是因为ValueMember是“beef_ID”和“Chicken_ID”。这些在数据表中不可用。您需要将其更改为“Beef\u Name”或在sql select语句中包含“Beef\u ID”。
同样,对于同一个列表框,您正在设置两个不同的值成员。如果我错了,请纠正我。这就是我对它的理解。 您正试图在单击按钮时将数据绑定到列表框。 您有两个列表框控件要绑定 在分配成员之前,先分配数据源。它无法绑定,因为它尚未获得数据源
private void Chicken()
{
using (connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter("select Chicken_Name,WithOrWithout_Name,Chicken_Price from Tbl_Add a full outer join tbl_Chicken b ON b.Chicken_ID = a.Chicken_ID full outer join Tbl_WithORWithot c ON a.WorWO_ID = c.WithOrWothout_ID ; ", connection))
{
DataTable tbl_Chicken = new DataTable();
connection.Open(); //opens the connection
adapter.Fill(tbl_Chicken);
connection.Close(); //Closes the connection
lst_SHowdata.DataSource = tbl_Chicken; //assigns a datasource
lst_SHowdata.DisplayMember = "Chicken_Name"; //assigns display
lst_SHowdata.ValueMember = "Chicken_ID"; //assigns id
lst_SHowdata2.DataSource = tbl_Chicken;
lst_SHowdata2.DisplayMember ="Chicken_Price";
lst_SHowdata2.ValueMember = "Chicken_ID";
}
}
private void Beef()
{
using (connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter("select Beef_Name,WithOrWithout_Name ,Beef_Price from Tbl_Add a full outer join Tbl_Beef b ON b.Beef_ID = a.Beef_ID full outer join Tbl_WithORWithout c ON a.WorWO_ID = c.WithOrWothout_ID ; ", connection))
{
DataTable tbl_Beef = new DataTable();
connection.Open();
adapter.Fill(tbl_Beef);
connection.Close();
lst_SHowdata.DataSource = tbl_Beef
lst_SHowdata.DisplayMember = "Beef_Name";
lst_SHowdata.ValueMember = "Beef_ID";
lst_SHowdata2.DataSource = tbl_Beef;
lst_SHowdata2.ValueMember = "Beef_ID";
lst_SHowdata2.DisplayMember = "Beef_Price";
}
}
正确的代码^it
private void Chicken()
{
using (connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter("select * from Tbl_Add a full outer join tbl_Chicken b ON b.Chicken_ID = a.Chicken_ID full outer join Tbl_WithORWithot c ON a.WorWO_ID = c.WithOrWothout_ID ; ", connection))
{
DataTable tbl_Chicken = new DataTable();
connection.Open(); //opens the connection
adapter.Fill(tbl_Chicken);
connection.Close(); //Closes the connection
lst_Menu.DataSource = tbl_Chicken; //assigns a datasource
lst_Menu.DisplayMember = "Chicken_Name"; //assigns display
lst_Menu.ValueMember = "Chicken_Name";
lst_worwout.DataSource = tbl_Chicken;
lst_worwout.DisplayMember = "WithOrWithout_Name";
lst_worwout.ValueMember = "WithOrWithout_Name";
lst_Price.DataSource = tbl_Chicken;
lst_Price.DisplayMember = "Chicken_Price";
lst_Price.ValueMember = "Chicken_Price";
}
}
“it show me a System.ArgumentException”System.Windows.Forms.dll中发生“System.ArgumentException”类型的未处理异常。其他信息:无法绑定到新的值成员。这是当异常显示时它向我显示的消息。你的鸡肉里为什么有牛肉,还有鸡肉在你的牛肉里?我正在试图解决这个问题,不管有没有它们,还是一个错误谢谢你的延迟重播,是不是数据绑定在C中?因为当我粘贴代码时,数据绑定没有被识别,谢谢,我一直想解决这个问题,但我没办法,因为它在C。但是,它可能不在控制范围内。对不起,我在想ListView。实际上,您并不需要数据绑定。你能评论一下数据绑定行吗。试着运行它?我已经更新了代码。因为Databind()用于ASP控件,并且不存在于表单中。对不起,我应该在发帖前确认一下。但我的答案仍然没有改变。DataSource先执行,然后分配成员。不可以^^“虽然您的解决方案已经帮助我^^^修复了它,但我不知道它是否能正确执行^^”。我会把密码记下来的