6

DataGridViewEntityFrameworkから取得したリストを使用していくつかのデータを表示しています。このグリッドでは、のようないくつかのデータベース列を非表示に設定しidました。

ユーザーがグリッドビューをクリックすると、次の手順でどのオブジェクトがクリックされたかを知る必要があります。id列を取得できないという問題もあります。

datagridview1.CurrentRow.Cells[0].Value // here I get only visible cells

でも:

datagridview1.CurrentRow.DataBoundItem 

いくつかの列を非表示に設定することで、アタッチされたオブジェクトは匿名タイプになっているようです

何か案は?

ありがとうございました

4

5 に答える 5

5

私はちょうどこれを試しました:

private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    var value = dataGridView.Rows[e.RowIndex].Cells[0].Value;
}

そしてそれはうまくいきました。

私の例では、列 0 は非表示の列で、抽出する id プロパティが含まれています。

于 2012-08-09T19:40:38.400 に答える
2

私にとっては、 indexではなくcolumnNameを取ることができます。

したがって、列の名前が「id」の場合は、次を使用できます。

datagridview1.CurrentRow.Cells["id"].Value
于 2013-10-09T11:02:20.890 に答える
0

私はJakub Kaleta's answerそれが最善の解決策として受け入れられたことを見ました.私がそれをテストした後、問題があるようで、それYOU SHOULD CLICK ON TEXT DATAGIDVIEW CELL VALUE はかなり良いものではありません!
私は以下のソリューションでそれを行い、セルのすべての場所をクリックできます!

 private void dataGridView_SelectionChanged(object sender, EventArgs e)
        {
            if (dataGridView.SelectedCells.Count > 0)
            {
                int selectedrowindex = dataGridView.SelectedCells[0].RowIndex;
                DataGridViewRow selectedRow = dataGridView.Rows[selectedrowindex];
                _RoleID = int.Parse(Convert.ToString(selectedRow.Cells[1].Value));
                _RoleName = Convert.ToString(selectedRow.Cells[2].Value);

            }
        }

それは私にとって非常にうまくいきました。

于 2015-12-18T20:09:18.590 に答える