2012-04-05 83 views
2
//FormLoad  
dgvTable.CellClick += new DataGridViewCellEventHandler(getValues); 

//somwhere in FormClass 
private void getValues(object sender, DataGridViewCellEventArgs e) 
    { 
     int id = int.Parse(dgvTable.Rows[dgvTable.CurrentRow.Index].Cells[0].Value.ToString()); 
     var values = from c in v.db.TotalDoc 
        where c.TotalID == id 
        select c.TotalAmount; 
     dgvValues.DataSource = values; 
    } 

我在窗体上有两个datagridviews(dgv)。我从第一个dgv(dgvTable)中选择dataID并在其他dgv中获取这些id的所有值。 但e方法dgvTable.CellClick()不起作用。我得到了emtpy dgv。 请帮助您的评论后DataGridView.CellClick方法不起作用

+0

你在'getValues'设置一个破发点,以检查它是否上调?或者你可能会得到一个错误的值,与我使用MessageBox.Show(id.ToString())的v.db.TotalDoc' – 2012-04-05 18:23:21

+0

不匹配。有用。当我添加到我的方法MessageBox.Show(values.First()。ToString());所有表格的值为 – 2012-04-05 18:33:29

回答

1

好吧,我只是建议您使用.ToList()帮助电网识别数据来源:

int id = int.Parse(dgvTable.Rows[dgvTable.CurrentRow.Index].Cells[0].Value.ToString()); 
var values = (from c in v.db.TotalDoc 
       where c.TotalID == id 
       select c.TotalAmount).ToList(); 
dgvValues.DataSource = values; 
+0

;'它在消息窗口中显示第一个值。当我添加'.ToList()'(如你所建议的那样)时,它只会在dgv中显示一个项目,并且HasValue也会被添加。也许你知道一些其他的方式来使查询工作正确。 – 2012-04-06 04:08:37

+0

添加列。我用'dgv.Columns.RemoveAt(0)'将其删除。谢谢ToList()。有用。我错误地使用'v.db.TotalDoc'。我应该使用表'v.db.DocTable'。抱歉)。感谢您的帮助 – 2012-04-06 04:18:00

+0

+1,欢迎您,请将我的答案标记为已接受。 – 2012-04-06 14:55:08