XtraGridView不会将最后一行保存到我的数据库

时间:2018-05-01 20:05:52

标签: c# sql-server devexpress

我的代码有这个奇怪的问题,XtraGridView没有保存最后一行,这是我的代码添加coulmns到datagrid

        void CreateDataTable()
    {
        dt.Columns.Add("Le Nom");
        dt.Columns.Add("Quantité");
        dt.Columns.Add("Longueur");
        dt.Columns.Add("Largeur");
        dt.Columns.Add("Poids Total");
        dt.Columns.Add("Projet");
        dt.Columns.Add("Localisation");
        dt.Columns.Add("Fournisseur");
        dt.Columns.Add("Date");
        dt.Columns.Add("IDNom");
        dt.Columns.Add("IDProjet");
        dt.Columns.Add("IDLocalisation");
        dt.Columns.Add("IDFournisseur");
        gridControl1.DataSource = dt;

    }

这是我向gridview添加数据的代码

        private void btnSave_Click(object sender, EventArgs e)
    {
        DataRow r = dt.NewRow();

        r[0] = cmbName.Text;
        r[1] = txtQte.Text;
        r[2] = txtLength.Text;
        r[3] = txtWidth.Text;
        r[4] = txtWeight.Text;
        r[5] = cmbProject.Text;
        r[6] = cmbLocation.Text;
        r[7] = cmbProvider.Text;
        r[8] = txtDate.Text;
        r[9] = cmbName.SelectedValue;
        r[10] = cmbProject.SelectedValue;
        r[11] = cmbLocation.SelectedValue;
        r[12] = cmbProvider.SelectedValue;
        dt.Rows.Add(r);
    }

这是我将所有gridview数据保存到我的数据库的代码

        private void btnFinish_Click(object sender, EventArgs e)
    {
        for (int i=0;i<gridView1.RowCount-1;i++)
        {
                prd.Add_ItemQte(Convert.ToInt32(gridView1.GetRowCellValue(i, "IDNom")), Convert.ToInt32(gridView1.GetRowCellValue(i, "IDFournisseur")),
                Convert.ToInt32(gridView1.GetRowCellValue(i, "Quantité")), Convert.ToDateTime(gridView1.GetRowCellValue(i, "Date")),
                Convert.ToInt32(gridView1.GetRowCellValue(i, "Longueur")), Convert.ToInt32(gridView1.GetRowCellValue(i, "Largeur")),
                Convert.ToDouble(gridView1.GetRowCellValue(i, "Poids Total")), Convert.ToInt32(gridView1.GetRowCellValue(i, "IDLocalisation")), Convert.ToInt32(gridView1.GetRowCellValue(i, "IDProjet")));
        }
        MessageBox.Show("Ajouté avec succès", "Ajustements d'inventaire", MessageBoxButtons.OK, MessageBoxIcon.Information);

    }

我尝试在将数据保存到我的数据库之前添加此代码,但对我不起作用

            if (gridView1.IsEditing)
            gridView1.CloseEditor();
        if (gridView1.FocusedRowModified)
            gridView1.UpdateCurrentRow();

如果数据网格只有一行(它们不保存任何东西) 如果datagrid有多行(保存除最后一行之外的所有行) 当我运行代码时,我没有得到任何错误。 任何人都可以帮助我或告诉我哪里出错了,提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的循环存在逻辑问题。 行索引从0开始。因此,如果gridView有10行,则RowCount为10(索引0-9)。您正在运行循环gridView.RowCount-1。表示从循环中排除最后一行(RowCount 9,索引0-8)。

此外,我建议你循环你的数据表而不是循环gridView来保存数据库的值。

for(int i = 0;i<dt.Rows.Count;i++)
{
//your code here
}