2017-04-13 33 views
1

我有要求逐行填写datagridview。即如果第三行当前被选中,则数据需要在第三行中填充(我的查询总是返回单行)。每行都相同。数据库连接到datagridview的行只有

一些什么样的

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

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

希望,我做了我的要求,你清楚

是他们的任何方式来完成它....提前 感谢....

+0

所以你的意思是,最初会有空白行?当你点击那个空白行时,你会得到那个记录? –

+0

是的,这就是我想说的...... – speedyraz

+0

那么为什么不将数据绑定到页面加载的gridview上,并使所有行的文本颜色的背景,并使用jQuery来显示该行时,徘徊或点击? –

回答

1

如果您的查询返回单行,那么你只需要填写正确与列从您的查询值:

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

您的网格将不会被绑定到数据这种方式。但它会填满当前行中的列,就像你问的那样。

+0

谢谢...很多谢谢..你只是保存了我的整个工作... 你的答案正是我正在寻找,因为很多天.....再次感谢.. – speedyraz

0

我不认为这是可能的直接, 你可以使用一个列表与一定量的空对象,并将此列表绑定到您的DataGridView ...然后,你会有空行来处理。然后您可以用数据填充List的单行并更新绑定。 我也觉得你需要一个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 
}