在一个表单上,我有一个带有一个用户可以单击的按钮的列的dgv,它将它们带到另一个表单,其中显示有关该特定项的更多信息(从db读取)。
以下是单元格按钮单击的代码:
private void datagridview1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//MORE INFORMATION BUTTON DGV1
this.rowIndex1 = e.RowIndex;
this.ID = Convert.ToInt32(datagridview1.Rows[this.rowIndex1].Cells["id"].Value);
moreinformation moreinfo1 = new moreinformation();
moreinfo1.Show();
}
我使用public int ID { get; set; }
将特定项目的ID传递给另一个表单,以便它可以从数据库中获取正确的数据到“更多信息”。形式。
以下是信息页面的代码:
private void moreinformation_Load(object sender, EventArgs e)
{
//DISPLAY RELEVANT INFO FROM DB
invmain invmain2 = new invmain();
Connection();
sqlconnection.Open();
sqlcmd = new SqlCommand("SELECT * FROM inventory_table WHERE id= " + invmain2.ID, sqlconnection);
using (SqlDataReader sqldr = sqlcmd.ExecuteReader())
{
while (sqldr.Read())
{
txtbx1.Text = (sqldr["item"].ToString());
txtbx2.Text = (sqldr["quantity"].ToString());
linklbl1.Text = (sqldr["datasheet"].ToString());
txtbx3.Text = (sqldr["description"].ToString());
datelbl2.Text = (sqldr["date"].ToString());
}
sqldr.Close();
}
sqlconnection.Close();
}
我检查确保ID(在第一张表单上)正确设置为正确的ID(基于项目)。但是,在更多信息表单中,如果我包含一些消息框代码以显示ID:MessageBox.Show(invmain2.ID.ToString());
,则表明ID
为0
。
出了什么问题,我该如何解决?
答案 0 :(得分:1)
ID属性应位于moreinformation
表单上。如果您没有,请继续向该表单添加public int ID { get; set; }
。然后,您必须将ID传递给第二个表单的实例。因此,如果您拥有moreinformation.ID
属性,请将其设置如下:
private void datagridview1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//MORE INFORMATION BUTTON DGV1
this.rowIndex1 = e.RowIndex;
this.ID = Convert.ToInt32(datagridview1.Rows[this.rowIndex1].Cells["id"].Value);
moreinformation moreinfo1 = new moreinformation();
//ADD THIS LINE
moreinfo1.ID = this.ID;
moreinfo1.Show();
}