2017-03-07 124 views
-1

在我的代码中,我为每个按钮做了一个方法,例如我有鸡肉和牛肉按钮,他们有自己的方法,当我点击拳头时间的鸡肉按钮时装载它的表单将会显示在列表框中,但是当我在鸡之后点击牛肉按钮时,它会向我显示一个System.ArgumentException。 这将如何解决?System.Data.DataRowView我该如何解决

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"; 

还挺已经固定线路注释,以解决它,但我需要点击按钮两次,当我点击它的第一次它会显示在列表框System.Data.DataRowView。 如何解决它,并使其只显示在第一次点击?

+0

“它给我一个System.ArgumentException”<---任何消息,与一起去? –

+0

System.Windows.Forms.dll中发生未处理的“System.ArgumentException”类型异常。 附加信息:无法绑定到新值成员。 –

+0

这是它显示的异常时显示的消息 –

回答

0

纠正我,如果我错了。这是如何理解它。 您正试图将数据绑定到按钮单击上的列表框。 你有2个列表框控件绑定到。

在分配成员之前先分配数据源。它无法绑定,因为它尚未被赋予数据源。

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"; 
    }  
} 
+0

感谢抱歉的重播,是在C#中的DataBind,因为当我粘贴的代码dataBind不识别! ,谢谢我试图解决它,但我不能 –

+0

它是在C#中。但是,它可能不在控制之中。对不起,我在想ListView。你实际上并不需要数据绑定。你可以评论数据绑定行吗?并尝试运行它? – jmag

+0

我已经更新了代码。由于Databind()用于ASP控件,并且不存在于Forms中。对不起,我应该在发布前确认。但是我的答案在没有线路的情况下保持不变。 DataSource先走,然后分配成员。 – jmag

0

因为当您尝试将ValueMember设置为“Bee_Name”时,该列表绑定到tbl_chicken,而tbl_chicken没有Beef_Name,因此它正确地投诉。

要解决此问题,请将数据源设置为tbl_beef,然后设置ValueMember。

0

错误是因为valuemember是“Beef_ID”和“Chicken_ID”。这些在数据表中不可用。您需要将其更改为“Beef_Name”或在sql select语句中包含“Beef_ID”。 也为同一个列表框设置两个不同的值成员。

0

正确的代码^^它

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"; 


     } 
    }