2014-08-27 3 views
1

В настоящее время я могу импортировать свой лист excel в DataGridView. Однако, когда я пытаюсь добавить целую новую строку на основе разных переменных для каждого столбца этой строки, она не нравится.Заполнение строки datagridview с переменными, заданными для каждой ячейки

Я надеялся использовать

DataGridView1.Rows.Add(New String() {txt_id.Text, txt_name.Text, txt_modelnumber}) 

Однако я получаю ошибку говоря «Дополнительная информация: Ряды не может быть программно добавлены в коллекцию строк в DataGridView, когда элемент управления с привязкой к данным.»

Как сделать это не привязкой к базе данных? Или есть другой способ заполнить ячейки?

Мой код импорта:

Dim MyConnection As System.Data.OleDb.OleDbConnection 
    Dim DtSet As System.Data.DataSet 
    Dim MyCommand As System.Data.OleDb.OleDbDataAdapter 
    MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Users\Lenovo\Downloads\Test\exported.xls';Extended Properties=Excel 8.0;") 
    MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Products$]", MyConnection) 
    MyCommand.TableMappings.Add("Table", "Net-informations.com") 
    DtSet = New System.Data.DataSet 
    MyCommand.Fill(DtSet) 
    DataGridView1.DataSource = DtSet.Tables(0) 
    MyConnection.Close() 
+0

Вам нужно добавить строки к объекту, указанному в источник данных из DataGridView не DataGridView сам –

+0

я посмотрю, смогу ли я читать на datasourcesand добавление строк, однако я довольно смущен в минуту. Мой источник данных импортируется только из файла xlsx. Возможно ли сделать способ «DataGridView1.Rows.Add», или мне нужно сделать это явно другим способом? Также в каком случае будет использоваться «DataGridView1.Rows.Add», если не это? – Crystalwolf

+0

Вы должны назначить 'datagridview1.datasource = ?????' где-нибудь. О чем вы это понимаете? Покажите код, который вы используете, чтобы импортировать лист excel в сетку. 'DataGridView1.Rows.Add' используется, когда ваша сетка не привязана к источнику данных, поскольку состояния ошибок –

ответ

0

После назначения DataSource к DataGridView, вы не можете добавить строки в DataGridView непосредственно, вы должны добавить их в DataSource.

В вашем случае вам нужно добавить строки в DataTable dtSet.Tables(0)

См: how to add new rows into a datatable vb.net

Ваш только другой вариант заключается, чтобы добавить все строки в DataTable к сетке вручную, как это:

For each dr As DataRow In dtSet.Tables(0).Rows 
    DataGridView1.Rows.Add(New String() {dr.Item(0).ToString, etc}) 
Loop 
+0

Я попробовал первый вариант, но единственный результат, который я получил, - это полностью освободить импортированный файл datagridview и заменить его на строку, которую я установил. Однако я попробую второй метод. – Crystalwolf

0

Я попробовал другой метод, который опубликовал Мэтт Уилко, однако я не мог понять, как я могу это использовать. Поэтому я просмотрел его в библиотеке microsoft и нашел что-то, что отлично работало.

Dim table As DataTable = DtSet.Tables(0) 
    Dim newRow As DataRow = table.NewRow() 
    newRow("Product ID") = lastproductid + 1 
    newRow("Name") = txt_name.Text 
    table.Rows.Add(newRow) 

http://msdn.microsoft.com/en-us/library/system.data.datatable.rows(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

+0

Это использует метод, с которым я связан в своем ответе. –

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