如何从DataGridView选中行的指定单元格取值作为SQL查询参数?
问题分析与解决方案
代码存在的问题
- VB.NET中集合/数组的索引使用圆括号
(),而非方括号[],原代码的[]会直接导致语法错误。 - 控件名称大小写不一致:
dgvCurrentInv和dvgcurrentinv,虽然VB不严格区分大小写,但容易引发引用混淆。 - 硬编码列索引
2不够可靠,若表格列顺序调整,会直接取错值,建议通过列名"ITEMNUM"获取对应列,避免依赖列的位置。 - 未判断
CurrentRow是否为空,若没有选中行时会抛出空引用异常。
修正后的代码
' 先判断是否有选中的行,避免空引用 If CrabDetails.dgvCurrentInv.CurrentRow IsNot Nothing Then ' 通过列名获取ITEMNUM列的索引,取代硬编码的数字 Dim itemNumColumnIndex As Integer = CrabDetails.dgvCurrentInv.Columns("ITEMNUM").Index ' 安全获取单元格值:先判断Value是否为空,再转字符串 Dim itemNumValue As String = If(CrabDetails.dgvCurrentInv.CurrentRow.Cells(itemNumColumnIndex).Value IsNot Nothing, CrabDetails.dgvCurrentInv.CurrentRow.Cells(itemNumColumnIndex).Value.ToString(), String.Empty) ' 传入查询参数 SQl.AddParam("@Loggb", itemNumValue) End If
触发逻辑说明
要在选中单元格时执行这段代码,需要绑定DataGridView的CellClick或SelectionChanged事件:
Private Sub dgvCurrentInv_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvCurrentInv.CellClick ' 放入上面的修正代码 End Sub
内容的提问来源于stack exchange,提问作者D.Thomson
相关产品推荐
相关产品推荐

