DataGridView bind XML (수정 및 행 추가)
WinForm 도구상자에 기본으로 제공하는 DataGridView를 활용한 XML 에디터 만들기
1. WinForm 프로젝트를 생성합니다.
2. DataGridView와 버튼 하나를 합니다.
3. DataGridView에 XML을 바인딩(합체)합니다.
ID 컬럼(Column)에는 유일한(Unique) 값이 들어가도록 설정합니다.
1
2
3
4
5
6
7
8 |
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"test.xml");
dataSet.Tables["caption"].Columns["ID"].Unique = true;
dataGridView1.DataSource = dataSet;
dataGridView1.DataMember = "caption";
|
cs |
4. DataGridView에 새로운 행(Row)을 추가합니다.
1
2
3
4
5
6
7
8 |
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"test.xml");
dataSet.Tables["caption"].Columns["ID"].Unique = true;
dataGridView1.DataSource = dataSet;
dataGridView1.DataMember = "caption";
|
cs |
5. 수정, 추가된 값을 저장합니다.
엑셀처럼 각 셀(Cell)을 클릭, F2 버튼을 눌러서 편집, 추가할 수 있습니다.
이후에 아래 코드를 실행하면 XML에 저장됩니다.
1
2 |
DataSet ds = (DataSet)dataGridView1.DataSource;
ds.WriteXml(xmlPath); |
cs |
전체 소스
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 |
namespace DataGridViewTest
{
public partial class Form1 : Form
{
DataSet dataSet = new DataSet();
string xmlPath = @"test.xml";
public Form2()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
dataSet.ReadXml(xmlPath);
dataSet.Tables["caption"].Columns["ID"].Unique = true;
dataGridView1.DataSource = dataSet;
dataGridView1.DataMember = "caption";
}
private void button1_Click(object sender, EventArgs e)
{
DataRow dr = dataSet.Tables["caption"].NewRow();
dr["ID"] = "123";
dr["Caption_Text"] = "456";
dataSet.Tables["caption"].Rows.Add(dr);
DataSet ds = (DataSet)dataGridView1.DataSource;
ds.WriteXml(xmlPath);
}
}
} |
cs |
XML
1
2
3
4
5
6 |
<?xml version="1.0" encoding="utf-8"?>
<StringTable>
<Caption ID="LEVEL">등급</Caption>
<Caption ID="TYPE">분류</Caption>
<Caption ID="KIND">종류</Caption>
</StringTable> |
cs |
실행화면