2012-05-22 3 views
0

я использовал следующее, чтобы добавить таблицу в DataGridView на WinForm:добавление строки к DGV связанному с таблицей

void PopulateGridView() { 
     conn = new SqlConnection(ConfigurationManager.ConnectionStrings["IMS"].ConnectionString); 
     myAdapt = new SqlDataAdapter("SELECT * FROM FrontDesk.dbo.tb_xxx", conn); 
     mySet = new DataSet(); 
     myAdapt.Fill(mySet, "AvailableValues"); 
     myTable = mySet.Tables["AvailableValues"]; 

     this.uxChargeBackDataGridView.DataSource = myTable; 
     this.uxChargeBackDataGridView.Columns["RefKey"].Visible = false; 
    } 

Есть 5 строк в таблице, которая имеет только два поля - поле RefKey скрыто от DGV и является основным ключом базовой таблицы.

Почему не работает следующая работа? Add, кажется, свойство коллекции Rows в DGV, который используется для добавления строки:

private void button1_Click(object sender, EventArgs e) 
    { 
     uxChargeBackDataGridView.Rows.Add(6, "dre"); 
    } 
+1

Попробуйте добавить строку к базовой таблице вместо представления. При необходимости обновите представление. – Davio

ответ

0

Поскольку сетка использует DataTable в качестве источника, вы должны добавить строку в таблицу. Сетка должна автоматически отражать, что:

DataTable table = (DataTable)uxChargeBackDataGridView.DataSource; 
DataRow row = table.NewRow(); 
row[0] = 6; 
row[1] = "dre"; 
table.Rows.Add(row); 

Используйте функцию NewRow() на таблице данных, чтобы получить объект DataRow, который имеет схему, используемую в таблице данных.

Вы не должны создать table ссылки, если вы переместили свой mySet и myTable переменных в рамки уровня формы, то вы могли бы просто использовать myTable.Rows.Add(row); вместо этого.

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