2012-08-06 62 views
0

當我執行getPkRowReport()時,如果我在同一個窗體(form1)上使用該值,它將正確工作。如果我需要表單2的PK,它始終默認爲頂行,從未選擇我在啓動表單2之前選擇的行。如果在啓動表單2後查看錶單1,則會選擇正確的行,但我仍然可以獲得PK爲最高紀錄。任何幫助,將不勝感激。以另一種形式從datagridview中獲取所選記錄的包

形式1:

private int pkFromReport; 
    public int PkFromReport 
    { 
     get 
     { 
      pkFromReport = getPkRowReport(); 
      return pkFromReport; 
     } 
    } 

    private int getPkRowReport() 
    { 
     if (dgvReportGrid.CurrentRow != null) 
     { 
      //get selected row index 
      int index = this.dgvReportGrid.CurrentRow.Index; 
      //get pk of selected row using index 
      string cellValue = dgvReportGrid["rptNo", index].Value.ToString(); 
      //change pk string to int 
      int pKey = Int32.Parse(cellValue); 

      return pKey; 
     } 
     else 
     { 
      return -1; 
     } 
    } 

表格2:

private frmMain mainForm = new frmMain(); 

private void button1_Click(object sender, EventArgs e) 
    { 
     textBox1.Text = mainForm.PkFromReport.ToString(); 
    } 
+1

我不確定CurrentRow是否返回SelectedRow。該屬性可能會受到失去/獲得焦點的形式的影響。也許嘗試使用DataGridView的.SelectedRows集合來查找所需的行? – 2012-08-06 03:09:00

+0

收藏對我而言較新,因此可能需要一些時間才能弄清楚。我曾嘗試使datagridview僅用於測試原因並將所有代碼放在表單2上。我仍然得到相同的結果。即使我在調試時啓動表單2後更改form1上的記錄,我總是得到最高記錄的pk。 – 2012-08-06 03:36:38

+0

我已經嘗試datagridview.focus()時加載第二個窗體,但沒有幫助。 – 2012-08-10 01:47:09

回答

1

CurrentRow獲取包含當前單元格的行。 當表單失去焦點時,所選行不再是當前行。

您應該使用SelectedRows集合來獲取當前選定的行。既然你打算只有一個選定的行,像這樣改變你的代碼:

private int getPkRowReport() 
{ 
    if (dgvReportGrid.SelectedRows.Count > 0) 
    { 
     //get selected row index 
     int index = this.dgvReportGrid.SelectedRows[0].Index; 
     //get pk of selected row using index 
     string cellValue = dgvReportGrid["rptNo", index].Value.ToString(); 
     //change pk string to int 
     int pKey = Int32.Parse(cellValue); 

     return pKey; 
    } 
    else 
    { 
     return -1; 
    } 
} 
+0

我做了你的修改,現在我只是返回-1爲每個選擇。 – 2012-08-06 04:03:31

+0

看看代碼,這是什麼意思?您沒有任何選定的行。 SelectedRows.Count爲0.調試並驗證。 – nunespascal 2012-08-06 04:12:48

+0

我不知道我理解。當我選擇一行時,計數應該大於0?當我點擊一行時,它會直接轉到其他地方。 – 2012-08-06 18:16:08

相關問題