enter image description here我有2个不同的数据网格,第一个DG1是我的物品列表,而DG2是已购买物品的物品队列。我的目标是每当我单击DG2中的项目时,也会选择具有相同名称或ID的DG1。我想忽略索引,因为我的商品队列与商品列表顺序不同。
private void dgItems_CellClick(object sender, DataGridViewCellEventArgs e)
{
int rowindex = dgItems.Rows[e.RowIndex].Index;
int columnindex = dgItems.Columns[e.ColumnIndex].Index;
dgItemList.Rows[rowindex].Cells[columnindex].Selected = true;
}
答案 0 :(得分:0)
您需要从两个datagridviews单元格访问Value
属性
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
int rowindex = dataGridView1.Rows[e.RowIndex].Index;
int columnindex = dataGridView1.Columns[e.ColumnIndex].Index;
foreach (DataGridViewRow row in dataGridView2.Rows)
row.Selected = false;
var cellValue1 = dataGridView1.Rows[rowindex].Cells[columnindex].Value;
foreach (DataGridViewRow row in dataGridView2.Rows)
{
var cellValue2 = row.Cells[columnindex].Value;
if (cellValue1 == cellValue2)
row.Selected = true;
else
row.Selected = false;
}
}
dataGridView1
是您的dgItems
,而dataGridView2
是您的dgItemList
。
编辑:
如果两个datagridviews列都在不同的索引上,则必须提供列索引以匹配值。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
int rowindex = dataGridView1.Rows[e.RowIndex].Index;
int columnindex = dataGridView1.Columns[1].Index;
foreach (DataGridViewRow row in dataGridView2.Rows)
row.Selected = false;
var cellValue1 = dataGridView1.Rows[rowindex].Cells[1].Value; // 1 <= index of Name column in dgItems
foreach (DataGridViewRow row in dataGridView2.Rows)
{
var cellValue2 = row.Cells[0].Value; // 0 <= index of Name column in dgItemList
if (cellValue1 == cellValue2)
row.Selected = true;
else
row.Selected = false;
}
}
输出:
答案 1 :(得分:0)
按名称查找项目的最简单方法是循环浏览第二个列表中的项目,并返回与查询匹配的名称的索引。
private int FindRowIndex(DataGridView view, string searchValue)
{
foreach(DataGridViewRow row in view)
{
if(row.Cells[1].Value.ToString().Equals(searchValue))
return row.Index;
}
return -1;
}
然后,您只需使用它来控制在第二个表中选择哪个项目。
private void dgItems_CellClick(object sender, DataGridViewCellEventArgs e)
{
int rowindex = dgItems.Rows[e.RowIndex].Index;
int columnindex = dgItems.Columns[e.ColumnIndex].Index;
dgItemList.Rows[rowindex].Cells[columnindex].Selected = true;
string searchName = dgItemList.Rows[rowindex].Cells.Value.ToString();
int secondRowIndex = FindRowIndex(dgItemList2, searchName);
dgItemList2.Rows[secondRowindex].Cells[columnindex].Selected = true;
}
如果需要,您可以重复基本循环以找到备用列索引。如果要单击列表2中的项目,并选择列表1,则有一种引用方法可以使您重复该过程。