数据库仅连接到 datagridview 的行
database connection to datagridview's row only
我有要求逐行填充datagridview。即,如果当前选择了第 3 行,则需要在第 3 行中填写数据(我的查询 returns 总是单行)。每一行都一样。
有点喜欢
DataTable dt = new DataTable();
dataadapter.Fill(dt);
dataGridView1.Rows[index].DataSource = dt; (just a hunch, but not working)
(instead of ) //dataGridView1.DataSource = dt;
希望我向您说明了我的要求
他们有什么方法可以做到吗....
提前致谢....
我认为这不可能直接实现,
您可以使用带有一定数量的空对象的列表,并将此列表绑定到您的 DataGridView ......然后您将有空行可以使用。然后,您可以用数据填充列表的单行并更新绑定。
我还认为在这种情况下您需要 BindingSource 而不是 DataTable...
像这样:
private List<YourObject> gridData; // List
private BindingSource bindingSource;
public void Init()
{
this.gridData = new List<Anything>();
//prefill list, in this case we want to have 100 empty rows in DataGrid
for (var i = 0; i < 100; i++)
{
this.gridData.Add(new YourObject());
}
this.bindingSource.DataSource = this.gridData;
}
public void UpdateRow(int row)
{
this.gridData[row] = (from .. in select ...).FirstOrDefault(); // your query
}
如果您的查询 returns 是单行,那么您只需使用查询中的正确值填充列即可:
dataGridView1.Rows[rowIndex].Cells["ColumnName"].Value =
dt.Rows[0]["ColumnNameInDataTable"].ToString();
您的网格不会以这种方式绑定到数据。但它会像您要求的那样填充当前行中的列。
我有要求逐行填充datagridview。即,如果当前选择了第 3 行,则需要在第 3 行中填写数据(我的查询 returns 总是单行)。每一行都一样。
有点喜欢
DataTable dt = new DataTable();
dataadapter.Fill(dt);
dataGridView1.Rows[index].DataSource = dt; (just a hunch, but not working)
(instead of ) //dataGridView1.DataSource = dt;
希望我向您说明了我的要求
他们有什么方法可以做到吗.... 提前致谢....
我认为这不可能直接实现, 您可以使用带有一定数量的空对象的列表,并将此列表绑定到您的 DataGridView ......然后您将有空行可以使用。然后,您可以用数据填充列表的单行并更新绑定。 我还认为在这种情况下您需要 BindingSource 而不是 DataTable...
像这样:
private List<YourObject> gridData; // List
private BindingSource bindingSource;
public void Init()
{
this.gridData = new List<Anything>();
//prefill list, in this case we want to have 100 empty rows in DataGrid
for (var i = 0; i < 100; i++)
{
this.gridData.Add(new YourObject());
}
this.bindingSource.DataSource = this.gridData;
}
public void UpdateRow(int row)
{
this.gridData[row] = (from .. in select ...).FirstOrDefault(); // your query
}
如果您的查询 returns 是单行,那么您只需使用查询中的正确值填充列即可:
dataGridView1.Rows[rowIndex].Cells["ColumnName"].Value =
dt.Rows[0]["ColumnNameInDataTable"].ToString();
您的网格不会以这种方式绑定到数据。但它会像您要求的那样填充当前行中的列。