簡體   English   中英

C#以另一種形式將Datagridview數據發送到文本框

[英]C# sending Datagridview data to textbox in another form

我必須以第一種形式形成一個datagrid視圖,其中顯示所有患者記錄,以第二種形式顯示新的或更新患者的形式。 當我單擊任何患者的第一個表單的更新按鈕時,那么datagrid視圖中的所有數據將填充第二個表單的文本框。 在主要形式中,我創建了一種添加帶有gridview數據的文本框的方法,這是該方法

public void datainsert(int i)
{
   if (dgvPatientData.Rows.Count != 0)
   {
      form.txtpk.Text = dgvPatientData.Rows[i].Cells[0].Value.ToString();
      form.txtacc.Text = dgvPatientData.Rows[i].Cells[1].Value.ToString();
      form.accdate.Text = dgvPatientData.Rows[i].Cells[2].Value.ToString();
      form.txtssn.Text = dgvPatientData.Rows[i].Cells[3].Value.ToString();
      form.txtregno.Text = dgvPatientData.Rows[i].Cells[4].Value.ToString();
      form.txtlname.Text = dgvPatientData.Rows[i].Cells[5].Value.ToString();
      form.txtfname.Text = dgvPatientData.Rows[i].Cells[6].Value.ToString();
      form.dob.Text = dgvPatientData.Rows[i].Cells[7].Value.ToString();
      form.txtyears.Text = dgvPatientData.Rows[i].Cells[8].Value.ToString();
      form.txtmonths.Text = dgvPatientData.Rows[i].Cells[9].Value.ToString();
      form.combogender.Text = dgvPatientData.Rows[i].Cells[10].Value.ToString();
      form.txtaddress.Text = dgvPatientData.Rows[i].Cells[11].Value.ToString();
      form.txtzip1.Text = dgvPatientData.Rows[i].Cells[12].Value.ToString();
      form.txtzip2.Text = dgvPatientData.Rows[i].Cells[13].Value.ToString();
      form.txtstate1.Text = dgvPatientData.Rows[i].Cells[14].Value.ToString();
      form.txtstate2.Text = dgvPatientData.Rows[i].Cells[15].Value.ToString();
      form.txtphone.Text = dgvPatientData.Rows[i].Cells[16].Value.ToString();
      form.txtfax.Text = dgvPatientData.Rows[i].Cells[17].Value.ToString();
      form.txtchart.Text = dgvPatientData.Rows[i].Cells[18].Value.ToString();
      form.txtpn.Text = dgvPatientData.Rows[i].Cells[19].Value.ToString();
      form.Show();
      this.Visible = false;
   }
}

從更新按鈕,我正在調用上述方法

private void btnupdate_Click(object sender, EventArgs e)
{
   var currentRow = dgvPatientData.CurrentCell.RowIndex;
   datainsert(currentRow);
}

****問題是我在第二個表單上添加了上一個按鈕**,當我通過datagridview行索引-1時,它不起作用

我希望當我單擊上一個或下一個按鈕時,datagrid視圖中的數據顯示在所有文本框中。 提前致謝

病人登記的第二種形式

嘗試以下方法:

private void btnupdate_Click(object sender, EventArgs e)
    {
        var currentRow = dgvPatientData.CurrentCell.RowIndex;
        datainsert(currentRow - 1);

    }

我在datainsert調用中添加了“ -1”。 我相信,由於currentRow是一個整數,因此datainsert(currentRow-1)應該可以工作。

讓我知道這個是否奏效。

您是否收到特定的錯誤消息? 這將有助於您解決問題。

我認為您應該在調用datainsert函數時檢查RowIndex是否不為-1。

一種替代方法是使用以下方法獲取選定的行索引:

dgvPatientData.SelectedRows[0].Index

當然,您應該檢查是否已選擇至少一行(如果不允許選擇多行,則最多只能有一行)。

有點題外話,但可能有用。 我將使用DataGridViewCellCollection的字符串索引器 因此,代替:

gvPatientData.Rows[i].Cells[4].Value

建議使用類似:

gvPatientData.Rows[i].Cells["RegNo"].Value

當要求您在現有列的中間放置一列時,這一點尤其重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM