在选定的位置打开数据表单

时间:2013-12-21 07:26:45

标签: c# datagridview

情境:

我有一个简单的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;
}

2 个答案:

答案 0 :(得分:0)

您只需要将行的值传递给details form的构造函数,如上所述。

现在您需要将这些值分配到表单controls,例如textboxesdatetimepicker等。

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();
                }
            }