當我執行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();
}
我不確定CurrentRow是否返回SelectedRow。該屬性可能會受到失去/獲得焦點的形式的影響。也許嘗試使用DataGridView的.SelectedRows集合來查找所需的行? – 2012-08-06 03:09:00
收藏對我而言較新,因此可能需要一些時間才能弄清楚。我曾嘗試使datagridview僅用於測試原因並將所有代碼放在表單2上。我仍然得到相同的結果。即使我在調試時啓動表單2後更改form1上的記錄,我總是得到最高記錄的pk。 – 2012-08-06 03:36:38
我已經嘗試datagridview.focus()時加載第二個窗體,但沒有幫助。 – 2012-08-10 01:47:09