You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 06:22:09