Datagridview 全行选择但获取单个单元格值

问题描述 投票:0回答:19

我有一个全行选择的数据网格视图。 无论单击该行中的哪个单元格,我如何仅从某个单元格获取数据,因为它突出显示了整行。

c# winforms datagridview
19个回答
114
投票

你可以这样做:

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

25
投票

如果你想获取选中单元格的内容;您需要行和单元格的索引。

int rowindex = dataGridView1.CurrentCell.RowIndex;
int columnindex = dataGridView1.CurrentCell.ColumnIndex; 

dataGridView1.Rows[rowindex].Cells[columnindex].Value.ToString();

10
投票

我知道,我回答有点晚了。但我愿意做出贡献。

DataGridView.SelectedRows[0].Cells[0].Value

这段代码非常简单


8
投票

在CellClick事件中可以编写以下代码

string value =
      datagridviewID.Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString();

使用上面的代码,您将获得您单击的单元格的值。如果您想获取单击行中特定列的值,只需将 e.ColumnIndex 替换为您想要的列索引即可


5
投票

您还可以获取单元格的值,因为当前选择在

CurrentRow

下引用
dataGridView1.CurrentRow.Cell[indexorname].FormattedValue

这里可以使用索引或列名并获取值。



2
投票

我只是想指出,你可以使用 .selectedindex 让它变得更干净一点

string value = gridview.Rows[gridview.SelectedIndex].Cells[1].Text.ToString();

2
投票
string value = dataGridVeiw1.CurrentRow.Cells[1].Value.ToString();

1
投票

只需使用:

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

1
投票

这可以让我获得数据网格视图中精确单元格的文本值

private void dataGridView_SelectionChanged(object sender, EventArgs e)
    {
        label1.Text = dataGridView.CurrentRow.Cells[#].Value.ToString();
    }

您可以在标签中看到它并更改 # 与您想要的确切单元格的索引


0
投票

使用

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

0
投票

对于那些无法触发点击事件的人,可以使用以下代码

public Form1()
            {
                InitializeComponent();
                this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
            }

0
投票

要根据整行选择获取一个单元格值:

if (dataGridView1.SelectedRows.Count > 0)
      {
         foreach (DataGridViewRow row in dataGridView1.Rows)
           {
               TextBox1.Text = row.Cells["ColumnName"].Value.ToString();
           }
      }
else
      {
        MessageBox.Show("Please select item!");
      }
     }

0
投票

最简单的代码是

DataGridView1.SelectedCells(column_index).Value

例如,对于第一个选定的单元格:

DataGridView1.SelectedCells(0).Value

0
投票

dataGridView1.SelectedRows[0].Cells[0].Value;


0
投票

对于 vb.net 2013 我使用

DataGridView1.SelectedRows.Item(0).Cells(i).Value

其中 i 是手机号


0
投票

将 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 中的所有单元格分配给文本框。


0
投票
 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);
        }
    }

0
投票

要获取 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
         }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.