从DataGridView读取

时间:2014-03-04 10:23:28

标签: c# sql winforms datagridview

我的DataGridView填充了我的SQL信息: enter image description here

[它只能点击一个完整的行而不仅仅是一个单元格,如我的图片所示]

我尝试了一些来自Reading data from DataGridView in C#的代码示例,但它适用于我的问题。

我试试这个,因为它似乎很好

dataGridView.Rows[MyIndex].Cells["MessageHeadline"].Value.ToString();

但是我得到了一个错误。

现在我想拿索引(加1,因为它从0开始)如果我按一行,我的程序应该从我的DataGridView获取信息并将其还给。

3 个答案:

答案 0 :(得分:2)

尝试使用CurrentRow代替SelectedRow。只有从RowHeader选择了行或RowSelection属性设置为FullRowSelect时,才会执行所选行。但是,CurrentRow实际上是专注于行。即使您只选择了一个单元格,也可以获得价值。

dataGridView.CurrentRow.Cells["MessageHeadline"].Value.ToString()

答案 1 :(得分:1)

试试这个:

将datagridview的SelectionMode属性设置为CellSelect。现在,您将能够自行选择一个单元格。

CellMouseClick事件中:

private void MyGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    string FullContent = "";
    for (int i = 0; i < MyGridView.Columns.Count; i++)
    {
        FullContent += MyGridView.Rows[e.RowIndex].Cells[i].Value.ToString() + "^";
    }
    FullContent = FullContent.Substring(0, Content.Length - 1);
    string[] Content=FullContent.Split('^')
}

现在,您可以从Content数组中获取每个列内容。 像:

Content[0],Content[1],Content[2],etc.

例如,如果单击datagridview中的第一行。 您可以访问以下内容:

FullContent;  //1^Test BGW 1^Test^All^12.05.2014^.....

分割内容:

Content[0];   //1
Content[1];   //Test BGW 1
Content[2];   //Test
Content[3];   //All
Content[4];   //12.05.2014

答案 2 :(得分:0)

仅使用foreach循环即可解决问题。

        foreach (DataGridViewRow row in gridStore.Rows)
        {
            MessageBox.Show(row.Cells[2].Value.ToString());    //row.Cell[index Here!]
        }