我在现有数据集中添加了一个新列,其中包含数据,并将其显示在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);
答案 0 :(得分:0)
还有另一种方法,在构建新列时设置Expression属性
因此,假设您在索引5和索引7处的两列名为success
和dp
,那么您可以在添加新列时编写此列
exam
当然,这样就无需执行自己的循环来初始化列ds.Tables[0].Columns.Add("Final_Mark",
typeof(double),
"([dp] * (40 / 100)) + ([exam] * (60 / 100))");