我有 5 个组合框、5 个文本框和 5 个 numericUpDown,我需要用多行查询的数据填充它们。
查询结果为:
clave descr canti
ABR002 ABRAZADERA DE RIEL UNICANAL 1" 1
ABR003 ABRAZADERA DE RIEL UNICANAL 1/2" 2
ABR004 ABRAZADERA DE RIEL UNICANAL 3/4" 3
ABR005 ABRAZADERA PARA TUBING 18 CM 4
ABR006 ABRAZADERA DE RIEL UNICANAL 2 1/2" 5
我用于从查询行检索数据的代码是:
try
{
MySqlCommand cmdc = new MySqlCommand("select clave, descr, canti from notaspd where folio = '" + comboBox6.Text + "';", conn);
MySqlDataAdapter dataadapc = new MySqlDataAdapter(cmdc);
System.Data.DataTable datatabc = new System.Data.DataTable();
dataadapc.Fill(datatabc);
foreach (DataRow row in datatabc.Rows)
{
rows = string.Format("{0}", row.ItemArray[0]);
comboBox1.Text = rows;
rows = string.Format("{0}", row.ItemArray[1]);
textBox3.Text = rows;
rows = string.Format("{0}", row.ItemArray[2]);
numericUpDown1.Value = Convert.ToDecimal(rows);
}
}
但是如果我这样做,所有的组合框、文本框和 nUD 都会填充最后一行,给我类似的内容:
ABR006 ABRAZADERA DE RIEL UNICANAL 2 1/2" 5
ABR006 ABRAZADERA DE RIEL UNICANAL 2 1/2" 5
ABR006 ABRAZADERA DE RIEL UNICANAL 2 1/2" 5
ABR006 ABRAZADERA DE RIEL UNICANAL 2 1/2" 5
ABR006 ABRAZADERA DE RIEL UNICANAL 2 1/2" 5
我理解这是因为 foreach 循环一直到最后一个结果并覆盖了最后一个结果。如何修改 foreach 使其仅返回 n 行结果?
我希望我已经说清楚了。
最佳答案
现在已经很晚了,如果我遗漏了什么,请原谅我!
您将每个单独的单元格存储在单独的控件中,那么为什么不直接访问 DataTable
中的每个单元格并设置适当的控件呢?
comboBox1.Text = Convert.ToString(datatabc.Rows[0][0]);
...
comboBox5.Text = Convert.ToString(datatabc.Rows[4][0]);
textBox1.Text = Convert.ToString(datatabc.Rows[0][1]);
...
textBox5.Text = Convert.ToString(datatabc.Rows[4][1]);
numericUpDown1.Value = Convert.ToDecimal(datatabc.Rows[0][2]);
...
numericUpDown5.Value = Convert.ToDecimal(datatabc.Rows[4][2]);
我只是看不出在这里使用 foreach
循环的原因。
关于C# MySQL 多行结果到组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247646/