ASP.NET前端搭配VB.NET后端如何获取GridView单元格Double类型值
问题原因
ASP.NET Web Forms 中System.Web.UI.WebControls.TableCell类没有Value属性,该属性是WinForm DataGridView控件的专属属性,这是你首次运行报错的根本原因。直接调用TableCell.ToString返回的是控件元数据而非单元格内存储的实际值,因此无法拿到正确的数值文本。
解决方案
场景1:单元格无嵌套控件,直接展示文本
直接读取TableCell的Text属性后转换为Double即可,推荐使用Double.TryParse做安全转换,避免值为空或格式不匹配时报错:
Dim tmpMax As Double Dim cellValue As String = Me.Dgv_Result1.Rows(1).Cells(columnName).Text.Trim() ' 安全转换数值 If Not Double.TryParse(cellValue, tmpMax) Then ' 转换失败时可自定义默认值,比如赋值为0 tmpMax = 0 End If
场景2:单元格内嵌套了Label、Literal等绑定控件
如果你的GridView列使用模板列,数值放在嵌套控件里,需要先找到对应控件再读取文本:
Dim tmpMax As Double ' 替换为你实际绑定数值的控件ID Dim targetCtrl As Control = Me.Dgv_Result1.Rows(1).Cells(columnName).FindControl("绑定数值的控件ID") If targetCtrl IsNot Nothing AndAlso Double.TryParse(targetCtrl.Text.Trim(), tmpMax) Then ' 转换成功可直接使用tmpMax Else tmpMax = 0 End If
补充说明
- GridView的行索引从0开始,如果你的GridView开启了表头展示,
Rows(0)对应表头行,第一行业务数据为Rows(1),如果未开启表头,Rows(0)就是第一行业务数据,使用时注意索引匹配。 - 不要直接使用
CDbl转换,遇到空值、非数值格式的内容时会直接抛出运行时异常,TryParse可以更好的兼容异常场景。
内容的提问来源于stack exchange,提问作者Sanjay Kumar
相关产品推荐
相关产品推荐

