TreeList
+ TreeList... 그리고 VGridControl
지금 프로젝트에서 사용하는 사용컨트롤인데...
처음 접하는 프로젝트였으므로 공부를 해볼 시간이 필요했는데, 잘 안되었다...
경험자였던 팀원분은 두달간 메뉴 여섯개 두달간 만드시다 잘렸고...
근데 막상 쭉 해보니 별건 아닌데... 왜 두달이 걸렸을까?
추가사항이나 수정사항이 나올때마다 왜 프로그래밍을 이렇게 했을까 싶을 정도로... 생각이 안잡힌다.
너무 복잡했던 사용법들때문에 그냥 집에서 사용법들을 알아봤다.
private void InitTreeList()
{
TreeListColumn tcKey = treeList1.Columns.Add();
tcKey.FieldName = "Key";
tcKey.Caption = "메뉴ID";
tcKey.Visible = true;
tcKey.VisibleIndex = 2;
TreeListColumn tcName = treeList1.Columns.Add();
tcName.FieldName = "Name";
tcName.Caption = "메뉴명";
tcName.Visible = true;
tcName.VisibleIndex = 1;
treeList1.KeyFieldName = "Key";
treeList1.ParentFieldName = "Prn_Key";
treeList1.DataSource = GetDataSource();
}
초간단 바인딩.
그러면 트리가 짠!
데이타 입력 수정 삭제 처리시 트리에 색상 반영은.
private void treeList1_NodeCellStyle(object sender, DevExpress.XtraTreeList.GetCustomNodeCellStyleEventArgs e)
{
DataRowView currentNode = treeList1.GetDataRecordByNode(e.Node) as DataRowView;
if (currentNode != null)
{
if (currentNode.Row.RowState == DataRowState.Added)
{
e.Column.AppearanceCell.ForeColor = Color.Blue;
}
else if (currentNode.Row.RowState == DataRowState.Modified)
{
e.Column.AppearanceCell.ForeColor = Color.Green;
}
else if (currentNode.Row.RowState == DataRowState.Deleted)
{
e.Column.AppearanceCell.ForeColor = Color.Silver;
}
else
{
e.Column.AppearanceCell.ForeColor = Color.Black;
}
}
}
그리고 treeList1.GetDataRecordByNode <-- 요 메서드
바인딩 된 노드의 데이타객체로 변환하는 메서드
추가적으로
private void GetChangeDataButton_Click(object sender, EventArgs e)
{
StringBuilder query = new StringBuilder();
var table = treeList1.DataSource as DataTable;
var chage = table.GetChanges();
if (chage != null)
foreach (DataRow dr in chage.Rows)
{
if ((dr.RowState & (DataRowState.Modified | DataRowState.Added | DataRowState.Deleted)) > 0)
{
query.AppendFormat("MenuID = {0}, MenuName = {1}" + Environment.NewLine, dr[0], dr[1]);
}
}
MessageBox.Show("" + query);
}
이건 바인딩 된 데이타의 변경된 데이타만을 가져오는 부분.
또 여기에 VGridControl 췟!
팀원이었던 분이 써놓은 컨트롤인데 ... 이것도 당췌 왜 그렇게 사용했는지 알수가 없는데
사용이 겁나게 단순한데...
private void InitVGrid()
{
var keyEdit = new DevExpress.XtraVerticalGrid.Rows.EditorRow("Key");
keyEdit.Properties.Caption = "메뉴ID";
keyEdit.Properties.ReadOnly = true;
vGridControl1.Rows.Add(keyEdit);
var nameEdit = new DevExpress.XtraVerticalGrid.Rows.EditorRow("Name");
nameEdit.Properties.Caption = "메뉴명";
nameEdit.Properties.ReadOnly = false;
vGridControl1.Rows.Add(nameEdit);
vGridControl1.DataSource = treeList1.DataSource;
}
요렇게 ㅡ.,ㅡ;; 끝.
그냥 저거 한줄이면 되는데...
음... 그분은 왜? 객체를 몇개나 만들어서 줬다 받았다 했을까?
'# 4) .Net ( Vs 2010 ) > DevExpress' 카테고리의 다른 글
ButtonEdit (0) | 2015.01.25 |
---|---|
Grid (0) | 2015.01.25 |