如何获取填充了sql数据的datagridview的选定单元格值?

时间:2019-06-05 15:45:35

标签: c# sql datagridview

我需要在用户单击它时在datagridview上获取选定单元格的值。

我尝试将值带到文本框以测试click事件,但是当我单击它时,文本框不显示单元格值。

 private void btnsync_Click(object sender, EventArgs e) //Obtiene el catálogo de presupuestos

    {
        SqlConnection conn = new SqlConnection(@"Data Source=.\MYINSTANCE;Integrated Security=True;MultipleActiveResultSets=True");
        string cmd = "SELECT name FROM master.dbo.sysdatabases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');";

        var dataAdapter = new SqlDataAdapter(cmd, conn);
        var commandBuilder = new SqlCommandBuilder(dataAdapter);
        var ds = new DataSet();
        dataAdapter.Fill(ds);
        dataGridView1.ReadOnly = true;
        dataGridView1.DataSource = ds.Tables[0];

    }

    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        if(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)
        {
            dataGridView1.CurrentRow.Selected = true;
            txtpresup.Text = dataGridView1.Rows[e.RowIndex].Cells["name"].FormattedValue.ToString();
        }


    }

我希望“ textpresup”文本框充满所选单元格的值。

2 个答案:

答案 0 :(得分:0)

您正在寻找的是

DataGridView.SelectedRows[0].Cells[0].Value.ToString();

不要忘记将Cells[0]更改为列索引(例如Cells[4])或列名(例如Cells["Name"]

但是,如果触发此代码并且未选择任何单元格/行,则很可能会获得null reference error

答案 1 :(得分:0)

已解决

  private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.SelectedCells.Count > 0)
            {
                int selectedrowindex = dataGridView1.SelectedCells[0].RowIndex;

                DataGridViewRow selectedRow = dataGridView1.Rows[selectedrowindex];
                string value = selectedRow.Cells["name"].Value.ToString();

                txtpresup.Text = value;
            }
        }
    }