我有一个按钮点击,它应该抓住所选单元格的值。但是,它只获取数据网格视图中的第一个单元格。我不确定这是否是我需要改变的属性或者是什么。
单击按钮时,表单将从另一个表单加载。这是加载到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();
答案 0 :(得分:0)
你可以试试这个:
progressView.SelectedCells[0].Value.ToString()
答案 1 :(得分:0)
您可能只获得第一个单元格的值,因为用户鼠标交互的CurrentCell
通常是这样。
逻辑流程:
CellContentClick
触发getSQLJobStatus
DataSource
CurrentCell
重置为单元格[0,0]
您可以通过点击不同的单元格内容来验证这一点 - 在鼠标按下单击的单元格高亮显示时,鼠标向上突出显示第一个单元格。
用户仍然可以通过单击内容外部的单元格或通过Tab键,Enter键和箭头键在那里导航来聚焦任何其他单元格。但只要您在单击单元格内容时更新源,您就会看到此行为。我建议将progressView.DataSource
更新为独立于源DataGridView
及其事件处理程序的其他位置。
答案 2 :(得分:0)
我想我找到了一个解决方案。我将SelectionMode更改为FullRowSelect。由于某种原因,它自动设置为ColumnHeaderSelect。
感冒现在也是这样:
string getJobID = progressView.SelectedRows[0].Cells["JOB_ID"].Value.ToString();