2014-01-21 2 views
0

У меня есть 5 comboBoxes, 5 текстовых полей и 5 числовыхUpDowns, которые мне нужно заполнить данными многострочного запроса.C# MySQL многострочный результат для comboBoxes

Результат запроса:

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);       
    } 
} 

Но если я сделаю это, все ComboBoxes, Textboxes и 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-line?

Надеюсь, я ясно дал понять.

ответ

0

Здесь поздно, поэтому простите меня, если я что-то упустил!

Вы сохраняете каждую отдельную ячейку в отдельном элементе управления, поэтому почему бы не просто получить доступ к каждой ячейке в 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 цикла здесь.

0

Вы можете попробовать это?

foreach (DataRow row in datatabc.Rows) 
{ 
    comboBox1.Text = string.Format("{0}", row["clave"]); 
    textBox3.Text = string.Format("{0}", row["descr"]); 
    numericUpDown1.Value = Convert.ToDecimal(string.Format("{0}", row["canti"]));       
} 

[править] вам может понадобиться ".ToString()" - отл. row ["clave"]. ToString()

Смежные вопросы