情境:
我有一个简单的GUI,用于会员数据库,datagridview
每个row
都是成员,membership details form
。我为event handler
行标题的点击事件创建了datagridview
以打开membership details form
。
问题:
我想知道如何让details form
打开并自动显示我点击行标题的成员的详细信息。
I.e。如果我点击成员编号3的行标题,则打开数据表单,成员编号为3。请参见此处的图片:
我想我应该将ID列的值传递给member details form
的构造函数。但构造函数应该如何处理int
?
这是我尝试过的,但它没有工作:
public MemberDetails(int id)
{
InitializeComponent();
this.BindingContext[ membershipDataSet, "Members"].Position = id;
}
答案 0 :(得分:0)
您只需要将行的值传递给details form
的构造函数,如上所述。
现在您需要将这些值分配到表单controls
,例如textboxes
,datetimepicker
等。
Details Form constructor
的代码:
public DetailsForm(int ID, string LastName, string FirstName, string DateOfBirth)
{
InitializeComponent();
textBox1.Text = ID.ToString();
textBox2.Text = LastName;
textBox3.Text = FirstName;
dateTimePicker1.Value = DateTime.Parse(DateOfBirth);
}
RowHeaderMouseClick
事件的代码:
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
//retrieving values from "datagridview1"
int id = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
string LastName = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
string FirstName = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
string DateOfBirth = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
//instantiating "DetailsForm"
DetailsForm DetailsFormObject = new DetailsForm(id, LastName, FirstName, DateOfBirth);
//displaying the form
DetailsFormObject.ShowDialog();
}
答案 1 :(得分:0)
要导航到参数id
标识的记录,我在for循环中使用了MoveNextItem.PerformClick()方法。
public MemberDetails(int id)
{
InitializeComponent();
this.membersTableAdapter.Fill(this.membershipDataSet.Members);
// navigate to item
for (int i = 0; i < id; i++)
{
this.membersBindingNavigator.MoveNextItem.PerformClick();
}
}