[.Net] WinForm UI ์ปจํธ๋กค ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ(Data Binding) ํํค์น๊ธฐ(์์ ํฌํจ)
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ(Data Binding)์ด๋?
ํน์ WinForm UI ์ปจํธ๋กค ์ค DataGridView๋ ListBox์์ DataBinding ํญ๋ชฉ์ ๋ณธ ์ ์ด ์๋์? ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ UI ์ปจํธ๋กค๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฐ์ดํฐ์ UI ์ปจํธ๋กค์ด ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด, ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ UI ์ปจํธ๋กค์ด ์๋์ผ๋ก ๊ฐฑ์ ๋๊ฒ ๋ฉ๋๋ค. ์ฆ, ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ ๋ ์ฌ์ฉ์๊ฐ ์ผ์ผ์ด UI ์ปจํธ๋กค์ ์์ ํ ํ์๊ฐ ์๋ ๊ฒ์ด์ฃ .
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ ๋ ๋ ํ๋์ ์ฅ์ ์ด ์์ต๋๋ค. ๋๋์ ๋ฐ์ดํฐ๋ฅผ UI ์ปจํธ๋กค์ ๋ฐ์ํ ๋ ๋ฐ์ ์๋๊ฐ ๋น ๋ฅด๋ค๋ ๊ฒ์ด์ฃ .
๋ณธ๋ฌธ์์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ์ง ์์์ ๋ ๋ฌธ์ ์ , ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ ์ฉํ๋ฉด ์ด๋ค ํจ๊ณผ๋ฅผ ๋ณผ ์ ์๋์ง ์์ธํ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
DataGridView ์ปจํธ๋กค
DataGridView๋ ํํ ์์ ์์ ์ ์ ํ์ํ๋ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค. ์ ์ผ ์ฒซ ๋ฒ์งธ ํ์๋ ํค๋ ํ(Header row)์ด ์๊ณ , ๊ทธ ์๋๋ก๋ ๋ฐ์ดํฐ ํ(Data row)์ด ์ถ๊ฐ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ผ ๋ง์ง๋ง ํ์๋ ๋ฐ์ดํฐ ์ ๋ ฅ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐฉ๋ฒ
์๋ ์ฝ๋๋ ๋ฒํผ์ ํด๋ฆญํ๋ฉด '์ด๋ฆ'๊ณผ '๋์ด' ํค๋์ ๋ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๋์์ ๋๋ค.
private void btnCreateData_Click(object sender, EventArgs e)
{
dataGridView1.Columns.Add("Column1", "์ด๋ฆ");
dataGridView1.Columns.Add("Column2", "๋์ด");
dataGridView1.Rows.Add("์งฑ๊ตฌ", "22");
dataGridView1.Rows.Add("์ฒ ์", "33");
}
๋์์ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค. ์์ฃผ ๊ฐ๋จํ์ฃ ?
๊ทธ๋ผ ์ด๋ฒ์๋ ํจ์ฌ ๋ ๋ง์ 5์ฒ ๊ฐ์ ๋ฐ์ดํฐ ํ(Row)์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฐ์ดํฐ ํ์ ์ถ๊ฐํ๋ ํจ์๋ก Add()
๊ฐ ์ฌ์ฉ๋์ต๋๋ค.
private void btnCreateData_Click(object sender, EventArgs e)
{
dataGridView1.Columns.Add("Column1", "์ด๋ฆ");
dataGridView1.Columns.Add("Column2", "๋์ด");
for (int i = 0; i < 5000; i++)
{
dataGridView1.Rows.Add($"Name{i}", $"Age{i}");
}
}
๊ทธ๋ฆฌ๊ณ ๋์ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค. ๋ฒํผ์ ํด๋ฆญํ๊ณ ์ฝ 1~2์ด ์ ๋์ ์ง์ฐ ํ ์ปจํธ๋กค์ 5์ฒ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋์ต๋๋ค.
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์ฌ์ฉ ๋ฐฉ๋ฒ
์ด๋ฒ์๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํด ๋ณด๊ฒ ์ต๋๋ค. DataTable
์ ์ฌ์ฉํ์ฌ Column์ ์ถ๊ฐํ๊ณ , ์ดํ Rows์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
private void btnDataBinding_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Column1");
dt.Columns.Add("Column2");
for (int i = 0; i < 5000; i++)
{
dt.Rows.Add($"Name{i}", $"Age{i}");
}
dataGridView1.DataSource = dt;
}
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, ๋ฒํผ์ ํด๋ฆญํ์๋ง์ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ๋ณด์
๋๋ค. Add()
ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์๋ ๋ค๋ฅธ ์๋์
๋๋ค.
์ด์ฒ๋ผ, ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ์ฌ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ปจํธ๋กค๊ณผ ์ฐ๊ฒฐํ ๋ ์๋๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๋ํ, ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ์ญ์ ํ ๋ ์๋์ผ๋ก ์ปจํธ๋กค์ด ๊ฐฑ์ ๋ฉ๋๋ค. ์๋ ์ฝ๋๋ ๋งจ ๋ง์ง๋ง ํ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ , ๋งจ ์ฒ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ๋์์ ๋๋ค.
private void btnAdd_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)dataGridView1.DataSource;
dt.Rows.Add($"Name{dt.Rows.Count}", $"Age{dt.Rows.Count}");
}
private void btnDelete_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)dataGridView1.DataSource;
dt.Rows.RemoveAt(0);
}
์ฃผ์ ์ฌํญ
๋ฐ์ดํฐ ํ์ ์ถ๊ฐํ๋ Add()
๊ทธ๋ฆฌ๊ณ ์ ๊ฑฐํ๋ Remove()
๋ฅผ ์ฌ์ฉํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ์๊ณผ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๋ฐฉ์์ ๊ฐ์ด ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ง์ฝ, ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์ดํ Add()
๋ Remove()
๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด ๋ค์์ ๋ฉ์์ง๊ฐ ๋ฐ์ํฉ๋๋ค.
private void btnMixed_Click(object sender, EventArgs e)
{
try
{
DataTable dt = new DataTable();
dataGridView1.DataSource = dt;
dataGridView1.Rows.Add($"Name", $"Age");
}
catch(Exception exc)
{
MessageBox.Show(exc.Message);
}
}
์ปจํธ๋กค์ด ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ๋ ๊ฒฝ์ฐ์๋ DataGridView์ ํ ์ปฌ๋ ์ ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ํ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์, ์ฒ์๋ถํฐ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ ๊ฒ์ธ์ง ์๋๋ฉด ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ์ฌ์ฉํ ๊ฒ์ธ์ง ๋ฏธ๋ฆฌ ์ ํํ ํ ๊ฐ๋ฐํด์ผ ํฉ๋๋ค.
'Programming > .Net' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[.Net] ์์ฑํ AI, C#์์ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(LLM) LLaMaSharp ์ฌ์ฉํ๊ธฐ(์์ ํฌํจ)
[.Net] ์์ฑํ AI, C#์์ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(LLM) LLaMaSharp ์ฌ์ฉํ๊ธฐ(์์ ํฌํจ)
2024.08.16 -
[.Net] XML ํ์ผ ์ฝ๊ธฐ์ ์ฐ๊ธฐ, ๊ทธ๋ฆฌ๊ณ ์ง๋ ฌํ(Serialization)๋ก ๊ฐ์ฒด์ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ(์์ ํฌํจ)
[.Net] XML ํ์ผ ์ฝ๊ธฐ์ ์ฐ๊ธฐ, ๊ทธ๋ฆฌ๊ณ ์ง๋ ฌํ(Serialization)๋ก ๊ฐ์ฒด์ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ(์์ ํฌํจ)
2024.05.13 -
[.Net] ML.NET์ ์ด์ฉํ ๋ฅ ๋ฌ๋ ๋ชจ๋ธ ์์ฑํ๊ธฐ - ์ด๋ฏธ์ง ๋ถ๋ฅ
[.Net] ML.NET์ ์ด์ฉํ ๋ฅ ๋ฌ๋ ๋ชจ๋ธ ์์ฑํ๊ธฐ - ์ด๋ฏธ์ง ๋ถ๋ฅ
2023.10.15 -
[.Net] ์ง์ฐ(Delay) ํจ์๋ค์ ํน์ง๊ณผ ์ฐจ์ด์ ์ ๋ฆฌ
[.Net] ์ง์ฐ(Delay) ํจ์๋ค์ ํน์ง๊ณผ ์ฐจ์ด์ ์ ๋ฆฌ
2023.01.09