我有一个全行选择的数据网格视图。 无论单击该行中的哪个单元格,我如何仅从某个单元格获取数据,因为它突出显示了整行。
你可以这样做:
private void datagridview1_SelectionChanged(object sender, EventArgs e)
{
if (datagridview1.SelectedCells.Count > 0)
{
int selectedrowindex = datagridview1.SelectedCells[0].RowIndex;
DataGridViewRow selectedRow = datagridview1.Rows[selectedrowindex];
string cellValue = Convert.ToString(selectedRow.Cells["enter column name"].Value);
}
}
如果你想获取选中单元格的内容;您需要行和单元格的索引。
int rowindex = dataGridView1.CurrentCell.RowIndex;
int columnindex = dataGridView1.CurrentCell.ColumnIndex;
dataGridView1.Rows[rowindex].Cells[columnindex].Value.ToString();
我知道,我回答有点晚了。但我愿意做出贡献。
DataGridView.SelectedRows[0].Cells[0].Value
这段代码非常简单
在CellClick事件中可以编写以下代码
string value =
datagridviewID.Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString();
使用上面的代码,您将获得您单击的单元格的值。如果您想获取单击行中特定列的值,只需将 e.ColumnIndex 替换为您想要的列索引即可
您还可以获取单元格的值,因为当前选择在
CurrentRow
下引用
dataGridView1.CurrentRow.Cell[indexorname].FormattedValue
这里可以使用索引或列名并获取值。
DataGridView.CurrentRow.Cells[n]
请参阅:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.currentrow.aspx
我只是想指出,你可以使用 .selectedindex 让它变得更干净一点
string value = gridview.Rows[gridview.SelectedIndex].Cells[1].Text.ToString();
string value = dataGridVeiw1.CurrentRow.Cells[1].Value.ToString();
只需使用:
dataGridView1.CurrentCell.Value.ToString()
private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());
}
或
// dataGrid1.Rows[yourRowIndex ].Cells[yourColumnIndex].Value.ToString()
//Example1:yourRowIndex=dataGridView1.CurrentRow.Index (from selectedRow );
dataGrid1.Rows[dataGridView1.CurrentRow.Index].Cells[2].Value.ToString()
//Example2:yourRowIndex=3,yourColumnIndex=2 (select by programmatically )
dataGrid1.Rows[3].Cells[2].Value.ToString()
这可以让我获得数据网格视图中精确单元格的文本值
private void dataGridView_SelectionChanged(object sender, EventArgs e)
{
label1.Text = dataGridView.CurrentRow.Cells[#].Value.ToString();
}
您可以在标签中看到它并更改 # 与您想要的确切单元格的索引
使用
Cell Click
,因为提到的其他方法将在数据绑定时触发,如果您想要选定的值,然后关闭表单,则没有用。
private void dgvProducts_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dgvProducts.SelectedCells.Count > 0) // Checking to see if any cell is selected
{
int mSelectedRowIndex = dgvProducts.SelectedCells[0].RowIndex;
DataGridViewRow mSelectedRow = dgvProducts.Rows[mSelectedRowIndex];
string mCatagoryName = Convert.ToString(mSelectedRow.Cells[1].Value);
SomeOtherMethod(mProductName); // Passing the name to where ever you need it
this.close();
}
}
对于那些无法触发点击事件的人,可以使用以下代码
public Form1()
{
InitializeComponent();
this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
}
要根据整行选择获取一个单元格值:
if (dataGridView1.SelectedRows.Count > 0)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
TextBox1.Text = row.Cells["ColumnName"].Value.ToString();
}
}
else
{
MessageBox.Show("Please select item!");
}
}
最简单的代码是
DataGridView1.SelectedCells(column_index).Value
例如,对于第一个选定的单元格:
DataGridView1.SelectedCells(0).Value
dataGridView1.SelectedRows[0].Cells[0].Value;
对于 vb.net 2013 我使用
DataGridView1.SelectedRows.Item(0).Cells(i).Value
其中 i 是手机号
将 dgwProduct 系列的单元格 1 分配给 ProductId。
private void btnUpdate_Click(object sender, EventArgs e)
{
ProductId = Convert.ToInt32(dgwProduct.CurrentRow.Cells[0].Value);
}
这里将行中的所有单元格放入文本框中。
private void dgwProduct_CellClick(object sender, DataGridViewCellEventArgs e)
{
var row=dgwProduct.CurrentRow;
tbxProductName.Text =row.Cells[1].Value.ToString();
tbxUnitPrice.Text = row.Cells[2].Value.ToString();
tbxQuantityPerUnit.Text = row.Cells[3].Value.ToString();
tbxStockUpdate.Text = row.Cells[4].Value.ToString();
}
这样,我们将 dataGridView 中的所有单元格分配给文本框。
private void DataGridView_SelectionChanged(object sender, EventArgs e)
{
if (dataGridViewX3.SelectedCells.Count > 0)
{
int selectedrowindex = dataGridViewX3.SelectedCells[0].RowIndex;
DataGridViewRow selectedRow = dataGridViewX3.Rows[selectedrowindex];
string cellValue = Convert.ToString(selectedRow.Cells[0].Value);
Console.WriteLine(cellValue);
}
}
要获取 DataGridView 中选定的行和单元格值:
foreach (DataGridViewRow row in this.dataGridView.Rows)
{
if (row.Selected == true)
{
foreach (DataGridView cell in rows.Cells)
{
string temp = cell.Value.ToString();
// Do something with string value
}
}
}