Datagridview完整的行选择,但获得单个单元格值

本文关键字:单个 单元格 行选 选择 Datagridview | 更新日期: 2023-09-27 18:10:39

我有一个datagridview,这是一个完整的行选择。我如何从某个单元格中获取数据,无论单击行中的哪个单元格,因为它突出显示了整个行。

Datagridview完整的行选择,但获得单个单元格值

你可以这样做:

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

我只是想指出,你可以使用。selecteindex来使它更简洁一些

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();
    }
}

对于无法触发click事件的用户,可以使用以下代码

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);
        }
    }