2015-08-13 6 views
0

У меня есть datagridview с одним столбцом и одной записью в моей форме, и я хочу добавить новую строку в конец datagridview одним нажатием кнопки и заполнить последнюю ячейку номером Rows.Count. но кажется, что когда новая строка добавлена ​​с помощью метода dataGridView1.Rows.Add(), она вставлена ​​в начало текущей строки. Как вставить строку в конец datagridview? Ожидается ли такое поведение?Добавление новой строки в конец datagridview

Спасибо.

private void button1_Click(object sender, EventArgs e) 
{ 

    dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[0].Value = dataGridView1.Rows.Count; 
    dataGridView1.Rows.Add(); 

} 

enter image description here

+1

Дубликат -> http://stackoverflow.com/questions/18440668/add-new-row-at-bottom-of-datagridview-in-winform –

+1

Я просто использовал 'dataGridView1 .Rows.Insert (dataGridView1.Rows.Count - 1, 1) ', но строка добавлена ​​в начало. Пожалуйста, поправьте меня, если я ошибаюсь? – user3723486

+0

Какую технологию вы используете? WPF, Windows Forms? Связан ли какой-нибудь файл данных? – Domysee

ответ

0

Попробуйте это:

private void button1_Click(object sender, EventArgs e) 
{ 
    object[] rowData = new object[dataGridView1.Columns.Count]; 
    rowData[0] = dataGridView1.Rows.Count; 
    dataGridView1.Rows.Add(rowData);   
} 
0

Хотя вопрос может быть duplicate, ответ предоставляется на этот вопрос не является достаточным решением. Вы поймете, почему.

Вы работаете по идее, что dataGridView1.Rows.Add(); добавляет новую строку в строку "" в начало текущей строки. "Это не совсем так. С текущей настройкой, следующий по умолчанию в конструкторе:

this.dataGridView1.AllowUserToAddRows = true; 

Это приводит к нижнему (неподтвержденному) ряду сетки, обозначен символом *. Это NewRow, как указано в коде, обратившись с помощью this.dataGridView1.NewRowIndex. Каждый раз, когда вы редактируете эту строку, она совершается, и добавляется еще NewRow.

DGV NewRow

Почему этот вопрос? Потому что, когда у вас есть это свойство, установленное на true, вызов dataGridView1.Rows.Add() добавляет новую строку в конец вашего заработанных строк перед NewRow. Например:

private void button1_Click(object sender, EventArgs e) 
{ 
    dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[0].Value = dataGridView1.Rows.Count; 
    dataGridView1.Rows.Add(new object[] { "I'm new" }); 
} 

Added Row

Предложенный ответ: dataGridView1.Rows.Insert(dataGridView1.Rows.Count - 1, 1) будет сделать то же самое. Следовательно, почему это не решение.

Решение

Своп порядок ваших двух строк кода.

private void button1_Click(object sender, EventArgs e) 
{ 
    dataGridView1.Rows.Add(); 
    dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[0].Value = dataGridView1.Rows.Count; 
} 

solved

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