将数据添加到具有现有数据的DataSet

时间:2015-08-07 21:16:29

标签: c# datagridview

我在现有数据集中添加了一个新列,其中包含数据,并将其显示在DGV中,这就是我所做的:

string con = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=""C:\Users\Chris\Documents\Visual Studio 2012\Projects\Login\Login\Student_Marks.mdf"";Integrated Security=True";
            string sql = "SELECT * FROM tbl_ExamMarks";
            go.setConn(con, sql);
            DataSet ds = go.getDatabaseData;
            ds.Tables[0].Columns.Add("Final_Mark", typeof(double));            
            dataGridView1.DataSource = ds.Tables[0];

现在我尝试用数据填充新列行,这就是我所做的:

double dp;
            double exam;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {

                double.TryParse(row.Cells[5].Value.ToString(), out dp);
                double.TryParse(row.Cells[6].Value.ToString(), out exam);
                row.Cells[7].Value = (dp * (40 / 100)) + (exam * (60 / 100));
            }

当我运行此操作时,出现错误

对象引用未设置为对象的实例。 在本声明中double.TryParse(dataGridView1.Rows[n].Cells[5].Value.ToString(), out dp);

1 个答案:

答案 0 :(得分:0)

还有另一种方法,在构建新列时设置Expression属性

因此,假设您在索引5和索引7处的两列名为successdp,那么您可以在添加新列时编写此列

exam

当然,这样就无需执行自己的循环来初始化列ds.Tables[0].Columns.Add("Final_Mark", typeof(double), "([dp] * (40 / 100)) + ([exam] * (60 / 100))");