c# DataTable 잔기술들
열 감추기
DataTable을 건드릴 게 아니라 DataGridView를 제어해야 한다.
DataGridView.Colums[].Visible = false;
파일 입출력
클래스는 procotol buffers(protobuf)를 이용하여 쉽게 바이너리로 바꿀 수 있지만 데이터 테이블은 힘들다. 데이터 테이블도 바꿀 수 있게 프로토버프를 이용한 라이브러리가 나와 있긴 하지만 프로토버프 제작자가 만든 게 아니라서 써 보진 않았다.
WriteXml는 데이터 테이블의 이름을 설정해야 작동한다. xml로 저장하고 읽는 건 저장에 많은 용량을 차지하고 느리다. 델파이로는 프로토버프처럼 바이너리 파일 입출력이 가능하여 편한데 .네트로는 가능하지 않다. DataTable이 담고 있는 데이터가 너무 많아서 xml 파일 입출력이 버거워지면 dbms를 써야 할 때가 된 거다.
private void button1_Click(object sender, EventArgs e)
{
DataTable dataTable = new("data table 0"); // name necessary
dataTable.Columns.Add("name");
dataTable.Columns.Add("select", typeof(bool));
dataTable.Rows.Add("test", true);
dataGridView1.DataSource = dataTable;
dataTable.WriteXml("test.dat", XmlWriteMode.WriteSchema);
}
private void button2_Click(object sender, EventArgs e)
{
DataTable dataTable = new();
dataTable.ReadXml("test.dat");
dataGridView1.DataSource = dataTable;
}