获取DataGridView的最后一行并将其存储到列表或数组中

时间:2016-04-08 03:28:45

标签: c# linq datagridview foreach

我有一个DataGridView dgv1,我将一次填充一行。

每次创建一行时,创建的行都将存储在List或Array中。

private void dgvScanLogs_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
        //List<string> sqlLog = dgvScanLogs.Rows[dgvScanLogs.Rows.Count - 1];

        //List<string> LogList = dgvScanLogs.Rows
        //                .OfType<DataGridViewRow>()
        //                .Select(r => r.Cells[0].Value.ToString())
        //                .ToList();

    }

我有一些代码,但似乎无法正确使用。
我所做的是将第一列列入清单,但我需要最后一行。

如何将最后/新行存储到ArrayList

2 个答案:

答案 0 :(得分:1)

首先,在方法范围内声明的任何变量在执行后将 丢失 ,在您的程序中就是这种情况。

我认为,您希望存储每个添加的行第一个 Cell值。

LogList定义为类变量。

List<string> LogList = new List<string>();
每次添加新行时都会触发

RowsAdded事件,因此每次调用此事件时都需要更新列表。

void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
    DataGridViewRow row = dataGridView1.Rows[e.RowIndex];

    LogList.Add(row[0].ToString());
}

答案 1 :(得分:0)

不太确定你想要什么。您似乎正在尝试将最后一行添加到本地定义的List,一旦您的RowsAdded处理程序返回,它就会超出范围,但无论如何:

List<string> sqlLog = new List<string>();
sqlLog.Add(dgvScanLogs.Rows[dgvScanLogs.Rows.Count - 1].ToString());

您需要先创建List,然后才能添加Item[Int32]DataGridViewRowCollection上的.setSparkHome("C:/tmp/spark-1.6.0-bin-hadoop2.6") 方法无法返回列表,因此您需要将其添加到现有列表中。