У меня есть локальная база данных (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;
}
}