c#DataGridView,始终只获取第一个单元格值

时间:2016-03-07 21:00:59

标签: c# datagridview

我有一个按钮点击,它应该抓住所选单元格的值。但是,它只获取数据网格视图中的第一个单元格。我不确定这是否是我需要改变的属性或者是什么。

单击按钮时,表单将从另一个表单加载。这是加载到DataGridView中的SQL表:

enter code herepublic void progressView_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        getSQLJobStatus();
    }

    public void getSQLJobStatus()
    {

        string connectionString = @"Data Source=FCMONITOR\AVIDAUTO;Initial Catalog=InterplayWatchFolder;Integrated Security=True";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            using (SqlDataAdapter aFiller = new SqlDataAdapter("SELECT [JOB_ID], [WORKFLOW_NAME], [JOB_NAME], [TRANSCODE_TRANSFER_STATUS], [DATE] FROM AVID_WATCH_JOBSTATUS", connection))
            {
                DataTable jobStatusDT = new DataTable();
                aFiller.Fill(jobStatusDT);

                progressView.DataSource = jobStatusDT;
                connection.Close();
            }

有一个标有"取消"的按钮。与datagridview在同一表单上。我试图从所选行获取JOB_ID值。我尝试使用CurrentCell和SelectedRows,但仍然只获得第一个单元格的值。

这里是我所拥有的按钮点击的当前代码:

 string getJobID = progressView.CurrentCell.Value.ToString();

3 个答案:

答案 0 :(得分:0)

你可以试试这个:

progressView.SelectedCells[0].Value.ToString()

答案 1 :(得分:0)

您可能只获得第一个单元格的值,因为用户鼠标交互的CurrentCell通常是这样。

逻辑流程:

  1. 用户点击单元格的内容。
  2. CellContentClick触发getSQLJobStatus
    • 这会更新网格的DataSource
    • 然后将CurrentCell重置为单元格[0,0]
  3. 您可以通过点击不同的单元格内容来验证这一点 - 在鼠标按下单击的单元格高亮显示时,鼠标向上突出显示第一个单元格。

    用户仍然可以通过单击内容外部的单元格或通过Tab键,Enter键和箭头键在那里导航来聚焦任何其他单元格。但只要您在单击单元格内容时更新源,您就会看到此行为。我建议将progressView.DataSource更新为独立于源DataGridView及其事件处理程序的其他位置。

答案 2 :(得分:0)

我想我找到了一个解决方案。我将SelectionMode更改为FullRowSelect。由于某种原因,它自动设置为ColumnHeaderSelect。

感冒现在也是这样:

string getJobID = progressView.SelectedRows[0].Cells["JOB_ID"].Value.ToString();