我必须以第一种形式形成数据网格视图,其中显示所有患者记录,并且以第二种形式新建或更新患者的形式。当我从任何患者的第一个表单点击更新按钮时,来自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视图中的数据会显示在所有文本框中。 在此先感谢
答案 0 :(得分:0)
尝试以下方法:
private void btnupdate_Click(object sender, EventArgs e)
{
var currentRow = dgvPatientData.CurrentCell.RowIndex;
datainsert(currentRow - 1);
}
我在datainsert调用中添加了“-1”。我相信,因为currentRow是一个int,datainsert(currentRow - 1)应该可以工作。
让我知道这是否有效。
您是否收到特定的错误消息?在尝试帮助您解决问题时,这将非常有用。
答案 1 :(得分:0)
我认为在调用datainsert
函数时,您应该检查RowIndex是否不是-1。
另一种方法是使用以下方法获取选定的行索引:
dgvPatientData.SelectedRows[0].Index
当然,您应该检查您是否至少有一个选定的行(如果不允许多行选择,则最多应该有一行)。
有点偏离,但可能有用。我会使用DataGridViewCellCollection的String indexer。所以,而不是:
gvPatientData.Rows[i].Cells[4].Value
建议使用以下内容:
gvPatientData.Rows[i].Cells["RegNo"].Value
当要求您将列放在现有列的中间时,这一点尤其重要。