2014-01-02 5 views
1

Мне это не удобно. У меня есть dataGridView, привязанный к SQL с помощью набора данных. Весь столбец генерируется набором данных, за исключением одного столбца, который заменяется кодированным, который является полем comboboxColumn. Чтобы избежать создания новых столбцов при редактировании строки, я установил allowUserToAddRows в значение false. Теперь я хотел бы добавить новые пустые строки нажатием кнопки. Я пробовал несколько способов без каких-либо успехов. Обновленный с полным кодомДобавить новую пустую строку в dataGridView, привязанную к DataSet

public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     this.affitto_saTableAdapter.Fill(this.affitto_SADataSet.affitto_sa); 
     DataGridViewComboBoxColumn comboCol1 = new DataGridViewComboBoxColumn(); 
     comboCol1.Name = "Periodo Rif."; 
     List<DateTime> periods = new List<DateTime>() { DateTime.Now.AddMonths(-2), DateTime.Now.AddMonths(-1), DateTime.Now, DateTime.Now.AddMonths(1), DateTime.Now.AddMonths(2) }; 
     //Dates = Dates.OrderBy(x => x).ToList(); 
     List<string> colSource = periods.Select(x => x.ToString("MMM/yyyy")).ToList(); 
     comboCol1.DataSource = colSource; 
     dataGridView1.Columns.Add(comboCol1); 
     comboCol1.DataPropertyName = "Periodo"; 
     dataGridView1.Columns["Periodo Rif."].DisplayIndex = 1; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     /* DataTable dt = dataGridView1.DataSource as DataTable; 
     DataRow row = dt.NewRow(); 
     dt.Rows.Add(row);*/ 

     (dataGridView1.DataSource as DataTable).Rows.Add((dataGridView1.DataSource as DataTable).NewRow()); 

    } 
} 

Как я могу добавить новую пустую строку в такой DGV?

+0

Этот код должен работать. Не могли бы вы объяснить, что пошло не так? PS: помните, что пустая строка для столбца combobox означает combobox (с -1 как selectedindex, то есть ни один элемент не выбран). – varocarbas

+0

@varocarbas, с приведенным выше кодом, я получаю исключение для исключения ссылок, и я не понимаю, почему. – FeliceM

+1

Я пробовал свой код (добавив правильный источник данных в DataGridView, чего нет в том, что вы опубликовали), и все в порядке. Можете ли вы включить ту часть, где вы установили DataSource? – varocarbas

ответ

1

Здесь решение для вашей проблемы:

dataGridView1.Rows.AddCopy(myDataGridView1.Rows.Count - 1); 

Поскольку ваш DGV не переплетены с любым из DataSource, следовательно, AddCopy из DataGridViewRow добавит новую строку в конце DGV (в Rows.Count - 1).

+0

Я получаю исключение для исключения ссылок, я не понимаю почему! – FeliceM

+0

@FeliceM Если у DGV есть dataSource, то это невозможно! Убедитесь, что DGV имеет dataSource в качестве DataTable или нет. –

+0

Как я уже сказал, это не очень удобно. Я обновил вопрос со всем кодом, который у меня есть в форме. – FeliceM

1
private void button1_Click(object sender, EventArgs e) 

    { 

     this.dataGridView1.Rows.Add(); 

    } 
+0

Пожалуйста, избегайте ответов только на код - добавьте некоторые пояснения к снайперам. –

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