2016-01-04 4 views
0

Я пытаюсь добавить строки в DataGridView, где данные строки поступают из . Вывод. Вот мой код:Добавление строк из оператора select в DataGridView

ArrayList stock_idArray = GetStockID_line_item(purchase_id); 
foreach (int stock_id in stock_idArray) 
{ 
    cmd = new SqlCommand("SELECT * FROM StockDetails.stock_item WHERE [email protected]_id", con); 
    cmd.Parameters.Clear(); 
    cmd.Parameters.AddWithValue("@stock_id", stock_id); 
    cmd.CommandType = CommandType.Text; 
    SqlDataAdapter dataadapter = new SqlDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    con.Open(); 
    dataadapter.Fill(ds, "ItemDetails"); 
    con.Close(); 
    //dataGridView1.Rows.Add(ds); 
    dataGridView1.DataSource = ds; 
    dataGridView1.DataMember = "ItemDetails"; 
} 

Однако его не работает, поскольку он показывает только 1 строку вместо всех строк. Я хочу получить строки для нескольких stock_id, а затем разместить их в одном DataGridView.

+0

Ну? Какой у Вас вопрос? –

+0

Вы можете использовать 'BindingSource' как' DataSource' 'DataGridView' и' DataSet' как 'DataSource'' BindingSource'. –

+0

@ user2946329 Извините, я пропустил некоторые части, о которых идет речь, пожалуйста, прочитайте еще раз – user2650277

ответ

0

создать новый DataSet ds для каждого stock_id и привязки сетки ds на каждой итерации. когда все операции завершены, сетка привязана к последнему набору данных.

попробовать инициализировать ds однажды цикла, а также установить DataSource после цикла:

ArrayList stock_idArray = GetStockID_line_item(purchase_id); 
DataSet ds = new DataSet(); 
foreach (int stock_id in stock_idArray) 
{ 
    cmd = new SqlCommand("SELECT * FROM StockDetails.stock_item WHERE [email protected]_id", con); 
    cmd.Parameters.Clear(); 
    cmd.Parameters.AddWithValue("@stock_id", stock_id); 
    cmd.CommandType = CommandType.Text; 
    SqlDataAdapter dataadapter = new SqlDataAdapter(cmd); 

    con.Open(); 
    dataadapter.Fill(ds, "ItemDetails"); 
    con.Close(); 
} 
dataGridView1.DataSource = ds; 
dataGridView1.DataMember = "ItemDetails"; 
0

Я хотел бы предложить вам добавить свои данные в сетку, используя код из заявления в цикле Еогеаспа с использованием

dataGridVew.Rows.Add(); 

Таким образом, вы можете контролировать то, что вы хотите, чтобы показать и сильно whatnot.im от привязок из-за that.u также может добавить объект вашего типа данных в скрытый столбец той же строки для будущих ссылок, если вы полагаетесь на программирование оо.

1

Ваши данные приведены в таблице ItemDetails. Таким образом, вы должны Привязать к DataTable не DataSet:

dataGridView1.DataSource = ds.Tables[0]; 

Или:

dataGridView1.DataSource = ds.Tables["ItemDetails"]; 
Смежные вопросы