【发布时间】:2017-09-07 20:37:08
【问题描述】:
绑定到数据库表的 DataGridView。我已经使用由 CellEndEdit 事件触发的更新命令设置了一个表格适配器,但是我在调用更新时遇到了一些麻烦。
更新命令:
UPDATE dbo.EpsProgramacaoSubmontagem
SET GUID = @GUID, CascoID = @CascoID, Casco = @Casco, BlocoID = @BlocoID, Bloco = @Bloco, Sub = @Sub, SSub = @SSub, Linha = @Linha,
Quantidade = @Quantidade, Peso = @Peso, [Inicio Plan Montagem] = @Inicio_Plan_Montagem, Oficina = @Oficina,
[Inicio Plan Submontagem] = @Inicio_Plan_Submontagem, [Termino Plan Submontagem] = @Termino_Plan_Submontagem, [Temino Real] = @Temino_Real,
Turno = @Turno, [Status Processamento] = @Status_Processamento, [Status Sub] = @Status_Sub, [Data ] = @Data_
WHERE (GUID = @Original_GUID)
上面的每个 TableAdapter.Update 参数都与 DataGridView 列相关。我已经尝试过了:
private void SubProgDGV_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
//UPDATE DE LINHA
DataGridViewRow row = SubProgDGV.Rows[e.RowIndex];
Guid guid = (Guid)row.Cells["gUIDDataGridViewTextBoxColumn"].Value;
int cascoid = Convert.ToInt16(row.Cells["cascoIDDataGridViewTextBoxColumn3"].Value);
string casco = row.Cells["cascoDataGridViewTextBoxColumn11"].Value.ToString();
int blocoid = Convert.ToInt16(row.Cells["blocoIDDataGridViewTextBoxColumn5"].Value);
string bloco = row.Cells["blocoDataGridViewTextBoxColumn11"].Value.ToString();
string sub = row.Cells["subDataGridViewTextBoxColumn1"].Value.ToString();
string ssub = row.Cells["sSubDataGridViewTextBoxColumn1"].Value.ToString();
string linha = row.Cells["linhaDataGridViewTextBoxColumn"].Value.ToString();
int qtd = Convert.ToInt16(row.Cells["quantidadeDataGridViewTextBoxColumn3"].Value);
double peso = Convert.ToDouble(row.Cells["pesoDataGridViewTextBoxColumn4"].Value);
DateTime datacmb = Convert.ToDateTime(row.Cells["inicioPlanMontagemDataGridViewTextBoxColumn"].Value);
string oficina = row.Cells["oficinaDataGridViewTextBoxColumn"].Value.ToString();
DateTime datasub = Convert.ToDateTime(row.Cells["inicioPlanSubmontagemDataGridViewTextBoxColumn"].Value);
DateTime datasubfim = Convert.ToDateTime(row.Cells["terminoPlanSubmontagemDataGridViewTextBoxColumn"].Value);
DateTime datatermino = row.Cells["teminoRealDataGridViewTextBoxColumn"].Value == DBNull.Value ? DateTime.MinValue : Convert.ToDateTime(row.Cells["teminoRealDataGridViewTextBoxColumn"].Value);
string turno = row.Cells["turnoDataGridViewTextBoxColumn"].Value.ToString();
string statusproc = row.Cells["statusProcessamentoDataGridViewTextBoxColumn"].Value.ToString();
string statussub = row.Cells["statusSubDataGridViewTextBoxColumn"].Value.ToString();
DateTime data = row.Cells["dataDataGridViewTextBoxColumn1"].Value == DBNull.Value ? DateTime.MinValue : Convert.ToDateTime(row.Cells["dataDataGridViewTextBoxColumn1"].Value);
this.epsProgramacaoSubmontagemTableAdapter.Update(cascoid, casco, blocoid, bloco, sub, ssub, linha, qtd, peso, datacmb, oficina, datasub, datasubfim, datatermino, turno, statusproc, statussub, data , guid );
}
但是,每当其中一个 datetimes 参数为 null 时,它都会引发异常。有没有更好的方法来处理这个问题?由于我已经设置了 DGV 列和 SQL 参数之间的关系,不应该是一个简单的方法吗?
【问题讨论】:
-
可能使用可为空的日期时间(DateTime?)
-
有什么例外?为变量赋值是例外,还是尝试更新表时例外?
-
WithMetta - DateTime 不可为空。
标签: c# database datagridview