我从(DataTable)DataGridView.DataSource获取DataTable。 此datagridview有两列,其值为Boolean,显示为复选框。 但是当我尝试从dataTable获取值时,我在布尔列中得到“无效的强制转换异常”。这是我获取值的代码......
private void WriteDataGridChanges( int grupoIndex ) {
if( dataGridView1.RowCount > 0 ) {
escuela.Grupos[grupoIndex].Alumnos.Clear();
DataTable dt = (DataTable)dataGridView1.DataSource;
foreach( DataRow r in dt.Rows ) {
/*crear un alumno, usar sus modificadores para los datos acorde con
el datagridview y añadirlo al grupo indicado 'lulz'
*/
Alumno al = new Alumno();
al.Nombre = (String)r["Nombre"];
al.Apellidos = (String)r["Apellidos"];
al.Cuota = (double)r["Cuota Total"];
al.CostoMaterial = (double)r["Costo de Materiales"];
al.MaterialEntregado = (Boolean)r["Material entregado?"];
al.CuotaCubierta = (Boolean)r["Cuota Cubierta?"];
al.Parcialidad = (double)r["Parcialidad total"];
al.ParcialidadMaterial = (double)r["Parcialidad de material total"];
al.UltimaParcialidad = (DateTime)r["Fecha último pago colegiatura"];
al.UltimoPagoMaterial = (DateTime)r["Fecha último pago de material"];
escuela.Grupos[grupoIndex].Alumnos.Add(al);
}
}
edited = false;
}
这是创建dataTable并将其传递给dataGridView
的代码 private DataTable RefreshGruposGrid( Grupo g ) {
DataTable t = new DataTable();
t.Columns.Add("Nombre", typeof(String));
t.Columns.Add("Apellidos", typeof(String));
t.Columns.Add("Cuota Total", typeof(double));
t.Columns.Add("Costo de Materiales", typeof(double));
t.Columns.Add("Material entregado?", typeof(Boolean));
t.Columns.Add("Cuota Cubierta?", typeof(Boolean));
t.Columns.Add("Parcialidad total", typeof(double));
t.Columns.Add("Parcialidad de material total", typeof(double));
t.Columns.Add("Fecha último pago colegiatura", typeof(DateTime));
t.Columns.Add("Fecha último pago de material", typeof(DateTime));
foreach( Alumno a in g.Alumnos ) {
DataRow r = t.NewRow();
r["Nombre"] = a.Nombre;
r["Apellidos"] = a.Apellidos;
r["Cuota Total"] = a.Cuota;
r["Costo de Materiales"] = a.CostoMaterial;
r["Material entregado?"] = a.MaterialEntregado;
r["Cuota Cubierta?"] = a.CuotaCubierta;
r["Parcialidad total"] = a.Parcialidad;
r["Parcialidad de material total"] = a.ParcialidadMaterial;
r["Fecha último pago colegiatura"] = a.UltimaParcialidad;
r["Fecha último pago de material"] = a.UltimoPagoMaterial;
t.Rows.Add(r);
}
return t;
}
提前感谢!
答案 0 :(得分:0)
好的,所以事情是使用DataGridView的默认值,每当我按下复选框列时我得到一个值,但如果我放弃它取消选中它会返回一个空值。