无法从DataGridView(gv_Quals)列中获取正确值的问题
解决DataGridView单元格取值返回控件类型字符串的问题
嘿,我一眼就get到你卡在哪了——你现在的代码直接调用了DataControlFieldCell对象的ToString()方法,它默认返回的就是控件的完整类型名称(也就是你看到的System.Web.UI.WebControls.DataControlFieldCell),根本不是单元格里的实际数据值!
问题根源
你写的这段代码:
String txtUnitID = gv_Quals.Rows[rowIndex].Cells[1].ToString();
这里的Cells[1]返回的是单元格控件本身,不是它承载的内容,所以直接ToString肯定拿不到你想要的数值5。
正确的解决方法
根据你的GridView列类型,有几种靠谱的取值方式:
1. 直接访问单元格的Text属性(适合BoundField列)
如果你的Unit ID列是绑定字段的BoundField,直接用Text属性就能拿到显示的数值:
String txtUnitID = gv_Quals.Rows[rowIndex].Cells[1].Text;
2. 访问单元格的Value属性(适合绑定数据源的场景)
如果GridView是直接绑定数据源(比如DataTable),用Value属性可以获取数据源里的原始值,避免格式转换问题,加上空值判断更稳妥:
String txtUnitID = gv_Quals.Rows[rowIndex].Cells[1].Value?.ToString();
3. 模板列的特殊处理(如果是TemplateField)
要是Unit ID列是模板列(里面放了Label、TextBox这类控件),得先找到对应的控件再取值:
// 假设模板里的Label控件ID是lblUnitID Label lblUnitID = (Label)gv_Quals.Rows[rowIndex].FindControl("lblUnitID"); String txtUnitID = lblUnitID?.Text;
小建议
调试的时候可以查看Cells[1]的属性列表,确认Text或Value里是否是你要的5,这样能更快定位问题~
内容的提问来源于stack exchange,提问作者Jack Henry
相关产品推荐
相关产品推荐

