web-dev-qa-db-ja.com

Datagridviewの行全体を選択しますが、単一のセル値を取得します

行全体を選択するdatagridviewがあります。行全体が強調表示されるため、行のどのセルをクリックしても、特定のセルのみからデータを取得するにはどうすればよいですか?.

38
Tsukasa

このようにできます......

     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 a = Convert.ToString(selectedRow.Cells["you have to mention you cell  corresponding column name"].Value);           


         }
     }
80
Enigma State

選択したセルの内容を取得する場合;行とセルのインデックスが必要です。

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

dataGridView1.Rows[rowindex].Cells[columnindex].Value.ToString();
18
Özer Özcan

CellClickイベントでは、次のコードを記述できます

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

Boveコードを使用すると、気に入ったセルの値を取得できます。クリックした行の特定の列の値を取得する場合は、e.ColumnIndexを目的の列インデックスに置き換えます。

7
Null Pointer

現在の選択はCurrentRowの下で参照されるため、セルの値も取得できます。

dataGridView1.CurrentRow.Cell[indexorname].FormattedValue

ここでは、インデックスまたは列名を使用して値を取得できます。

3
V4Vendetta

私が指摘したいのは、.selectedindexを使用して少しきれいにすることです

string value = gridview.Rows[gridview.SelectedIndex].Cells[1].Text.ToString();
2
Joe Stellato
string value = dataGridVeiw1.CurrentRow.Cells[1].Value.ToString();
2
Xhami

答えに少し遅れました。しかし、私は貢献したいと思います。

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

このコードは簡単なものです

2
Rizwan Ijaz

これにより、データグリッドビューの正確なセルのテキスト値が取得されます

private void dataGridView_SelectionChanged(object sender, EventArgs e)
    {
        label1.Text = dataGridView.CurrentRow.Cells[#].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
1
Polynomial

行全体の選択に基づいて1つのセル値を取得するには:

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
Ashraf Abusada

クリックイベントを発生できなかった場合は、次のコードを使用できます

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

最も簡単なコードはDataGridView1.SelectedCells(column_index).Valueです

例として、最初に選択されたセルの場合:

DataGridView1.SelectedCells(0).Value
0
ilkay kurt

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
ravenx30