1

我需要逐行填充datagridview。即,如果当前选择了第 3 行,则需要在第 3 行填写数据(我的查询总是返回单行)。每一行都一样。

一些喜欢的东西

              DataTable dt = new DataTable();
        dataadapter.Fill(dt);

        dataGridView1.Rows[index].DataSource = dt; (just a hunch, but not working)
   (instead of )  //dataGridView1.DataSource = dt;

希望我把我的要求告诉你

他们有什么方法可以实现它....在此先感谢....

4

2 回答 2

1

如果您的查询返回单行,那么您只需使用查询中的正确值填充列:

dataGridView1.Rows[rowIndex].Cells["ColumnName"].Value = 
    dt.Rows[0]["ColumnNameInDataTable"].ToString();

您的网格不会以这种方式绑定到数据。但它会像您要求的那样填充当前行中的列。

于 2017-04-13T21:14:37.167 回答
0

我不认为这是直接可能的,您可以使用带有一定数量空对象的列表并将此列表绑定到您的 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
}
于 2017-04-13T06:27:46.387 回答