본문 바로가기

프로그래밍

C# DataGridView bind XML (DataGridView를 활용한 XML 에디터 만들기)





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

 

실행화면