2012-04-05 136 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