首先定位,然后更改数据网格视图中选定行中单元格的值
本文关键字:视图 单元格 网格 数据网 定位 然后 数据 | 更新日期: 2023-09-27 18:27:25
我想知道如何更改数据网格视图中所选行中特定单元格的值。我可以更改值,但不能更改高亮显示的行,只能更改第一行。该行的hghlights在"查找"按钮代码中定义。
例如:我输入一个文本,它在每一行中搜索特定列中的文本,然后滚动到并高亮显示/选择整行。(这很好)
然后,我希望能够通过选择下拉列表(combobox)中已经存在的列名来获得高亮显示行的特定单元格的值。然后,它获取该单元格的值,并从中减去数值UpDownCounter(nudQTY)中的值。
到目前为止,我可以对列名(cbSupplList)选择的不同单元格执行此操作,但它只对第一行执行,而不是对"查找"按钮"代码"定义的高亮显示的行执行此操作。
以下是我迄今为止的尝试:
private void btnFind_Click(object sender, EventArgs e)
{
/* Code to search the alphanumneric Part Number (in Column1 header called "PART NUMBER")
and highlihgt the row*/
foreach (DataGridViewRow row in dataGridView1.Rows)
{
// Removes the row selection
row.Selected = false;
var cellValue = row.Cells["PART NUMBER"].Value;
if (cellValue != null && cellValue.ToString() == tbPartNum.Text.ToUpper())
{
// Scrolls the found row up and highlights the entire row
row.Selected = true;
dataGridView1.FirstDisplayedScrollingRowIndex = row.Index;
}
}
}
private void btnSold_Click(object sender, EventArgs e)
{
int cellVal;
int newCellVal;
cellVal = Convert.ToInt32(dataGridView1.CurrentRow.Cells[cbSuppList.Text.ToString()].Value);
newCellVal = Convert.ToInt32(cellVal - nudQty.Value);
dataGridView1.CurrentRow.Cells[cbSuppList.Text.ToString()].Value = newCellVal;
}
这似乎与"Find"代码中的SELECTED ROW和"Sold"代码中"CURRENT ROW"有关。制作SELECTED.ROW=CURRENT.ROW可以解决问题……有什么想法吗?
您只取消选择"行"而不选择"单元格"。
dataGridView1.CurrentRow-"获取包含当前单元格的行"
当前单元格保持原样=第一行的第一个单元格。
为了清除所有选定的行/单元格,请使用
dataGridView1.ClearSelection()
而不是
row.Selected = true;
使用
row.Cells["PART NUMBER"].Selected = true;
当前您只选择行,而不选择单元格。我希望这能帮助。。。
否则,您可能希望在btnSold_Click()中查找相关单元格,方法与在btnFind_Click)中查找相同
编辑
的完整解决方案
private void btnSold_Click(对象发送方,EventArgs e){
int cellVal;
int newCellVal;
cellVal = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[cbSuppList.Text.ToString()].Value);
newCellVal = Convert.ToInt32(cellVal - nudQty.Value);
dataGridView1.SelectedRows[0].Cells[cbSuppList.Text.ToString()].Value = newCellVal;
}
我刚刚用SelectedRows[0]替换了CurrentRow,效果很好。