如何从DataGridView中获取价格值的整数部分并显示到TextBox?
解决DataGridView提取价格整数部分到TextBox的方法
嘿,我来帮你搞定这个问题!你现在需要把DataGridView里显示的带两位小数的价格(比如500.00)提取出整数部分放到TextBox里,对吧?这里有几种实用的解决办法:
方法一:利用数值类型转换(推荐)
因为你的价格本质上是整数,只是SQL查询时格式化带了小数,所以可以把单元格值转成数值类型后取整:
// 示例:DataGridView单元格点击事件中处理 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { // 确保点击的是有效行和价格列 if (e.RowIndex >= 0 && e.ColumnIndex == 你的价格列索引) { // 将单元格值转为decimal,再强制转int取整 decimal priceDecimal = Convert.ToDecimal(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value); textBox1.Text = ((int)priceDecimal).ToString(); // 也可以用Math.Truncate确保只取整数部分(适合万一有非.00的情况) // textBox1.Text = Math.Truncate(priceDecimal).ToString(); } }这种方法稳定性高,不用担心字符串格式异常的问题。
方法二:字符串分割法
如果单元格值是字符串格式的带小数价格,直接按小数点分割取前半部分:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0 && e.ColumnIndex == 你的价格列索引) { string priceStr = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); // 按小数点分割,取第一个元素就是整数部分 string integerPart = priceStr.Split('.')[0]; textBox1.Text = integerPart; } }注意:如果遇到没有小数点的价格值,这种方法也能正常工作,但如果价格格式异常(比如多个小数点)会出问题,所以只推荐你确定格式固定的场景用。
方法三:直接从数据源取原始整数值(最稳妥)
如果你是把DataTable这类数据源绑定到DataGridView的,那原始数据里的价格本来就是整数,直接取数据源的原始值更靠谱:
// 假设你的数据源是DataTable private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0 && e.ColumnIndex == 你的价格列索引) { // 获取绑定的DataRow DataRow row = ((DataRowView)dataGridView1.Rows[e.RowIndex].DataBoundItem).Row; // 替换成你原始价格列的列名,比如"Price" textBox1.Text = row["Price"].ToString(); } }这种方法完全避开了显示层的格式化,直接拿最原始的整数数据,不会有任何格式问题。
内容的提问来源于stack exchange,提问作者Lucifer Rodstark
相关产品推荐
相关产品推荐

