실습용 프로젝트를 받아서 해보자.
실습을 하도록 하자.
WPF와 asp.net까지 View를 보여주고
그런다음 Singleton 패턴과 Factory 패턴까지는 해주고 실습을 해야될것인데
아마도 이해를 못하는것인지 아님 너무 하찮은 수준이라서 그런것인지.
아무런 댓글이 없으니 가늠할수가 없다.
엑셀용 DB 코드를 이용해서 실습용 프로젝트를 올려둔다.
이런 프로젝트를 하나 만들었다.
그러니 기본적인 개념만 쉽게 이해하면.. 프로그램을 좀 더 빠르게 그리고 유동적이고 수정이 용의하게 만들수 있다.
Ps1)
글을 적을때마다.
저글을 보면.. 낙서로 도배를 하는데도 아직 이글이 삭제되지 않아서
신기하게 생각하고 있는중이다.
원본 위치 <http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1596&page=1>
'C# DB 코딩 강좌' 카테고리의 다른 글
C#을 이용한 DB코딩 21 (0) | 2008.11.19 |
---|---|
C#을 이용한 DB코딩 20 (0) | 2008.11.14 |
C#을 이용한 DB코딩 19 (0) | 2008.11.14 |
C#을 이용한 DB코딩 18 (0) | 2008.11.14 |
C#을 이용한 DB코딩 17 (0) | 2008.11.14 |
C#을 이용한 DB코딩 15 (0) | 2008.11.14 |
C#을 이용한 DB코딩 14 (0) | 2008.11.14 |
C#을 이용한 DB코딩 13 (0) | 2008.11.14 |
C#을 이용한 DB코딩 12 (0) | 2008.11.14 |
C#을 이용한 DB코딩 11 (0) | 2008.11.14 |
폼 셋팅의 클래스를 살펴보자.
이녀석은 앞서 이야기 했듯이 리플랙션을 이용해서 폼의 컨트롤을 가져와서 foreach로 돌리는것에 불과하다.
나머지는 아래 다른 강좌에 적은것의 활용이다.
데브의 폼의 한계로 인해서 오른쪽으로 더 큰 그림이 들어가면 글자가 깨지므로 아래에 소스를 첨부한다.
class FormSetting
{
Form _Form;
IDataBase DB;
public FormSetting(Form FormRef)
{
_Form = FormRef;
DB = new setDBExcel(@"c:\test.xls");
}
public void AutoSetting()
{
FieldInfo[] controlA = _Form.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic);
foreach (FieldInfo ctl in controlA)
{
if (ctl.GetValue(_Form) is TreeView) setTreeView((TreeView) ctl.GetValue(_Form));
if (ctl.GetValue(_Form) is ListView) setListView((ListView)ctl.GetValue(_Form));
if (ctl.GetValue(_Form) is ComboBox) setComboBox((ComboBox)ctl.GetValue(_Form));
if (ctl.GetValue(_Form) is DataGridView) setGridView((DataGridView)ctl.GetValue(_Form));
}
}
private void setListView(ListView ctl)
{
}
private void setGridView(DataGridView ctl)
{
string TagID = (string)ctl.Tag;
if (TagID != "")
{
ctl.DataSource = DB.callSQL("select * from [combo$] where comboid = '" + TagID + "'").Tables[0];
}
}
private void setComboBox(ComboBox ctl)
{
string TagID = (string)ctl.Tag;
if (TagID != "")
{
DataTable DT = DB.callSQL("select * from [combo$] where comboid = '" + TagID + "'").Tables[0];
ctl.DataSource = DT;
ctl.DisplayMember = DT.Columns["Expression"].ToString();
ctl.ValueMember = DT.Columns["value"].ToString();
}
}
private void setTreeView(TreeView ctl)
{
string TagID = (string)ctl.Tag;
if (TagID != "")
{
DataTable DT = DB.callSQL("select * from [treeview$] where treeviewID = '" + TagID + "'").Tables[0];
ctl.Nodes.Add(DT.Rows[0]["Expression"].ToString());
new setTreeView(ctl, DT);
}
}
}
//---------------------------------------------------------------------------
데이타는 DB를 사용하기에는 교정이 귀찮음으로 인해서 가볍게 엑셀을 사용했다.
앞서 설명한 엑셀 DB클래스를 이용해서 처리했다.
각 컨트롤에는 바인딩에 필요한.. TAG를 적어야 하는데
그것이야.. 알아서 하면 될것이다.
원본 위치 <http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1595&page=1>
'C# DB 코딩 강좌' 카테고리의 다른 글
C#을 이용한 DB코딩 20 (0) | 2008.11.14 |
---|---|
C#을 이용한 DB코딩 19 (0) | 2008.11.14 |
C#을 이용한 DB코딩 18 (0) | 2008.11.14 |
C#을 이용한 DB코딩 17 (0) | 2008.11.14 |
C#을 이용한 DB코딩 16(실습파일포함) (0) | 2008.11.14 |
C#을 이용한 DB코딩 14 (0) | 2008.11.14 |
C#을 이용한 DB코딩 13 (0) | 2008.11.14 |
C#을 이용한 DB코딩 12 (0) | 2008.11.14 |
C#을 이용한 DB코딩 11 (0) | 2008.11.14 |
C#을 이용한 DB코딩 10 (0) | 2008.11.14 |
자.. 이제서야.. 제 1강에서 적은? 두번째였나.
알아서해() 라는 매서드 하나를 호출하면 모든게 되는것을 만들어 볼것이다.
별거 아닌걸 위해서 우리는 참 먼길을 돌아 돌아 온듯 싶다.
폼의 셋팅에는 두가지가 있는데 하나는 앞서 이야기한 재귀호출을 이용해서 처리해야 하고
두번째도 앞서 적어둔 Refection 을 이용하는 법이 있다.
어느게 좋다고는 말해주기 힘드나 여러모로 코드를 줄이고 귀차니즘에 의거해서 리플랙션을 이용하자.
재귀호출을 이용해서 처리하거나 리플랙션을 이용하거나 둘다 폼안에 포함된 그룹박스들이 처리된다.
(이 허접한 글도 좀 있어보이는걸 사용해야 좀 품위라는게 생길까봐 그런다.)
자 폼셋팅에 따른 클래스를 작성해 보자.
가볍게 작성하면 이런 모습이 될것이다.
그리고 나서 폼을 셋팅해보자.
이렇게 세팅후에 코딩은 어떻게 해볼까?
폼 코딩은 이게 전부이다. 하지만 버튼을 누르게 되면 아래와 같이 자동적으로 콤보박스와
트리뷰 그리고 그리드가 셋팅이 될것이다.
그럼 이게 뭐냐..
단지 비하인드에서 셋팅한것에 지나지 않냐고 생각할수도 있겠다.
이미 앞에 글에서 설명했듯이 이것은 뷰라는 코딩을 하는 이야기를 하는것이다.
우리의 뷰는 어떻게 변할지 아무도 모르는 것이다.
사용자가 이 화면이 아닌 다른화면을 요구했다고 생각해 보자.
우리는 뷰에 해당하는 폼을 다시 디자인 해야 될것이다.
그럼.. 폼 1을 그대로 둔채로 다시금 폼 2를 디자인 해보자.
사용자 2는 이런 폼을 요구했다고 생각해 보자..
이 폼의 코딩은 폼 1과 동일할것이다.
전체를 다 적어두 이렇게 밖에 적을게 없다.
그럼… 폼2의 실행화면은 어떻게 나오게 될까?
결론적으로는 앞서 이야기한 뷰라는것은 보여주기 위한것에 집중해야 한다는 이야기다.
보여주는것을 어떻게 보여주는가에 코딩하는것에 집중한다면 나머지는 컨트롤에서 이것을 해결해 줘야 코딩을 쉽게 변경할수 있다는 이야기를 하는것이다.
1강에서 적은 알아서해() 라는 이야기 하나를 설명하기 위해서 얼마나 많은 글을 적어야 했는지 참 고생스럽다.
원본 위치 <http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1594&page=1>
'C# DB 코딩 강좌' 카테고리의 다른 글
C#을 이용한 DB코딩 19 (0) | 2008.11.14 |
---|---|
C#을 이용한 DB코딩 18 (0) | 2008.11.14 |
C#을 이용한 DB코딩 17 (0) | 2008.11.14 |
C#을 이용한 DB코딩 16(실습파일포함) (0) | 2008.11.14 |
C#을 이용한 DB코딩 15 (0) | 2008.11.14 |
C#을 이용한 DB코딩 13 (0) | 2008.11.14 |
C#을 이용한 DB코딩 12 (0) | 2008.11.14 |
C#을 이용한 DB코딩 11 (0) | 2008.11.14 |
C#을 이용한 DB코딩 10 (0) | 2008.11.14 |
C#을 이용한 DB코딩 9(인터페이스) (0) | 2008.11.14 |