如何连接Datagridview行值并将其存储到一个数据表单元格中

时间:2014-12-30 11:09:33

标签: c# datagridview nullreferenceexception concat

我有一个带有一列的datagridview,我希望连接datagridview行值和

将它们插入一个可数据单元格中。这是我试过的代码

private string  concatArticle()
    {
        string libArt = null;

        foreach(DataGridViewRow row1 in ListeArt.Rows)
        {
            if (row1 != null)
            {
                libArt = string.Join(",", row1.Cells.Cast<DataGridViewCell>().Select(c => c.Value.ToString()).ToArray());
            }
        }
        return libArt;
    }

这是插入值的代码:

SqlCommand CmdService = new SqlCommand("INSERT INTO BonCommande (NumeroBon, LibArticle, Quantite, DateBon)" +
                    "VALUES (@NumeroBon, @LibArticle, @Quantite, @DateBon)", con4);

                CmdService.Parameters.AddWithValue("@NumeroBon", numeroBonTextBox.Text);
                CmdService.Parameters.AddWithValue("@LibArticle", concatArticle());
                CmdService.Parameters.AddWithValue("@Quantite",  Convert.ToInt32(quantiteTextBox.Text));
                CmdService.Parameters.AddWithValue("@DateBon", Convert.ToDateTime(dateBonDateTimePicker.Text));

                CmdService.ExecuteNonQuery();

但是当我执行此代码时,我收到此错误消息

  

NullReferenceException:未将对象引用设置为对象的实例。

错误在哪里?

提前致谢。

3 个答案:

答案 0 :(得分:1)

单元格中的值为null

首先进行空检查:

string.Join(",", row1.Cells.Cast<DataGridViewCell>().Where( c => c.Value != null ).Select( c => c.Value.ToString()).ToArray());

答案 1 :(得分:1)

试试这个:

libArt +=  string.Join(",", row1.Cells.Cast<DataGridViewCell>().Where(c => c.Value != null).Select(c => c.Value.ToString()).ToArray());

答案 2 :(得分:0)

试试这个 -

private string  concatArticle()
{
    string libArt = string.Join(", ", ListeArt.Rows.OfType<DataGridViewRow>()
                   .Select(i => i.Cells["yourColumnName"].Value.ToString()).ToArray());
    return libArt;
}