C # просматривать данные в форме, связанной с внешним ключом

У меня есть локальная база данных (SQL) с двумя таблицами Contact и Address. Таблица контактов содержит 5 полей адреса (Address1, Address2, ...), которые являются внешними ключами, связанными с первичным ключом таблицы Address. Что нужно сделать ik, - это когда я выбираю (например, используя поле со списком) имя контакта, просматривать все адреса, связанные с контактом. Я полный новичок в программировании на C # и не имею ни малейшего представления о том, как это сделать. Может ли кто-нибудь показать мне, как я могу просмотреть адреса, выбрав имя контакта?

РЕДАКТИРОВАТЬ (после попытки кодирования): Хорошо, вот как далеко я продвинулся. У меня есть две формы. У ФОРМЫ 1 есть datagridview, просмотр кнопки, имени и фамилии. Ввод имени и фамилии в поля textBox1 и textBox2 и нажатие кнопки button1 приводит к появлению списка записей, соответствующих имени ИЛИ фамилии. При нажатии кнопки в столбце 0 отображается таблица контактов. Я пытался передать имя и фамилию в текстовые поля tboFNAME и tboLNAME, но в этих текстовых полях ничего не отображается.

На следующем этапе я хотел бы передать идентификаторы адреса (внешние ключи) в таблицу контактов и впоследствии загрузить связанные данные в соответствующие текстовые поля.

ФОРМА 1:

public partial class Form1 : Form
{
    //SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\xxx\Documents\Visual Studio 2013\Projects\xxx\xxx\xxx.mdf;Integrated Security=True;Connect Timeout=30");
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\xxx\Documents\Visual Studio 2013\Projects\xxx\xxx\xxx.mdf;Integrated Security=True;Connect Timeout=30");
        dataGridView1.Visible = true;
        int varCount;
        varCount = 0;
        int i = 0;
        for (i = 1 ; i < dataGridView1.Rows.Count-1; i++)
        {
            if (!dataGridView1.Rows[i].IsNewRow)
            {

                if (dataGridView1[3, i].Value.ToString() == textBox1.Text
                    || dataGridView1[5, i].Value.ToString() == textBox2.Text
                    )
                {
                    dataGridView1.Rows[i].Visible = true;

                    varCount += 1;
                    Console.WriteLine(varCount);
                    int RHeight = dataGridView1.RowTemplate.Height;
                    int gridHeight = (varCount * RHeight) + RHeight;
                    dataGridView1.Height = gridHeight;
                 }

                else
                {
                    dataGridView1.Rows[i].Visible = false;
                }
            }

        }
    }
    private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'sAFIREDBDataSet1.contactdata' table. You can move, or remove it, as needed.
            this.contactdataTableAdapter1.Fill(this.sAFIREDBDataSet1.contactdata);
        this.contactdataTableAdapter.Fill(this.sAFIREDBDataSet.contactdata);
        }
    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        var senderGrid = (DataGridView)sender;
        String fnameRef = (String)dataGridView1.Rows[e.RowIndex].Cells[3].Value;
        String lnameRef = (String)dataGridView1.Rows[e.RowIndex].Cells[5].Value;
        if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
        e.RowIndex >= 0)
        {
            Contactsheet myForm = new Contactsheet();
            myForm.getFNAME = fnameRef;
            myForm.getLNAME = lnameRef;
            myForm.Show();
        }
    }
}

ФОРМА 2 (Контактный лист)

public partial class Contactsheet : Form
{
    public Contactsheet()
    {
        InitializeComponent();
    }
    public string getFNAME;
    public string getLNAME;
    private void Contactsheet_Load(object sender, EventArgs e)
    {
        tboFNAME.Text = getFNAME;
        tboLNAME.Text = getLNAME;
    }

}

person Dr.Mojo    schedule 28.11.2014    source источник
comment
Ваш вопрос слишком общий, укажите проблему и покажите код. Начните шаг за шагом, что вы в первую очередь не можете делать?   -  person mybirthname    schedule 28.11.2014


Ответы (1)


Прежде всего вы должны подключиться к своей базе данных SQL, как вы, вероятно, знаете. Я думаю, что проще всего будет использовать Entity Framework (версия 5 или 6). Создайте новый файл edmx, новое соединение с вашей базой данных и импортируйте ваши таблицы.

Попробуй написать код. Может, вы уже догадались. Если нет, то задайте более точный вопрос с примерами ваших попыток :)

person Marcin    schedule 28.11.2014