Å×À̺íÀ» ±×¸®µå¿¡ ¹ÙÀεùÇÏ¸é ¸ðµç ·¹Äڵ尡 ÀúÀåµÈ ¼ø¼´ë·Î Ãâ·ÂµÈ´Ù. Ãâ·ÂÇÒ
·¹Äڵ带 Á¦ÇÑÇϰųª Á¤·Ä »óŸ¦ ÁöÁ¤ÇÏ·Á¸é ºä¸¦ »ç¿ëÇÑ´Ù. ºä´Â ÇÊÅÍ Á¶°Ç, Á¤·Ä ±âÁØ, ÇàÀÇ »óÅ°ª µîÀÇ ¿©·¯ °¡Áö Á¶°Ç¿¡ ÀÇÇØ Å×À̺íÀÇ ·¹ÄÚµå
Áß ÀϺθ¸ º¸À¯ÇÏ´Â °¡Â¥ Å×À̺íÀÌ´Ù. ºä¸¦ »ý¼ºÇÑ ÈÄ ±×¸®µå¿¡ ¹ÙÀεùÇϸé Å×À̺íÀ» ´Ù¸¥ ÇüÅ·ΠÃâ·ÂÇÒ
¼ö ÀÖ´Ù.
Á¶°Ç¿¡ ¸Â´Â ·¹Äڵ常 ¼±ÅÃÇϰųª Á¤·ÄÇÏ·Á¸é Select ¸Þ¼µå¸¦ ¾µ
¼öµµ ÀÖ°í SQL Äõ¸®¹®À» È£ÃâÇÒ ¼öµµ ÀÖ´Ù. ±×·¯³ª °Ë»ö
°á°ú´Â ·¹ÄÚµåÀÇ ¹è¿ÀÏ »Ó Å×À̺íÀº ¾Æ´Ï¸ç ¿µ¼ÓÀûÀ¸·Î ÀúÀåµÇÁö ¾Ê¾Æ ±×¸®µå¿¡ ¹ÙÀεùÇÒ ¼ö ¾ø´Ù. ºä´Â
ºñ·Ï °¡Â¥ÀÌÁö¸¸ ÀÏÁ¾ÀÇ Å×À̺í·Î Ãë±ÞµÇ´Â °´Ã¼À̹ǷΠÄÁÆ®·Ñ¿¡ ¹ÙÀεù °¡´ÉÇÏ´Ù. ºä¿¡ Á¶°ÇÀ» ¼³Á¤ÇÏ°í
¹ÙÀεùÇÏ¸é ±×¸®µå´Â ºä°¡ °¡Áø ·¹Äڵ常 ÁöÁ¤ÇÑ Á¤·Ä ¼ø¼¿¡ ¸Â°Ô Ãâ·ÂÇÑ´Ù.
DataTableÀÇ
DefaultView ÇÁ·ÎÆÛƼ´Â Å×À̺íÀÇ ±âº» ºä¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¸®ÅÏÇϴµ¥ ÀÌ ºäÀÇ ÇÊÅÍ, Á¤·Ä, »óÅ°ªÀ» ¼öÁ¤ÇÏ¸é ¿øº» Å×À̺íÀÇ ÇàÀÌ ¿µÇâÀ» ¹Þ´Â´Ù. ºä¿¡ ´ëÇÑ
º°´Ù¸¥ ÁöÁ¤ÀÌ ¾ø´Ù¸é Å×ÀÌºí¿¡ ÀúÀåµÈ ¸ðµç ·¹Äڵ尡 ´Ù Ãâ·ÂµÇÁö¸¸ ±âº» ºäÀÇ ÇÁ·ÎÆÛƼ¸¦ ÆíÁýÇϸé Ãâ·ÂÇÒ ·¹ÄÚµåÀÇ Á¶°ÇÀ̳ª »óÅÂ, Á¤·Ä ¼ø¼¸¦ ¹Ù²Ü ¼ö ÀÖ´Ù. ±âº» ºä ¿Ü¿¡ Ãß°¡·Î ºä°¡ ´õ ÇÊ¿äÇϸé
¾ðÁ¦µçÁö DataView °´Ã¼¸¦ »ý¼ºÇÏ¸é µÈ´Ù.
public DataView (DataTable table, [string
RowFilter, string Sort, DataViewRowState RowState])
»ý¼ºÀÚ·Î ¿øº» Å×ÀÌºí¸¸ ÁöÁ¤Çϰųª ÇÊÅÍ, Á¤·Ä, »óÅ°ª±îÁö ÇѲ¨¹ø¿¡ Àü´ÞÇÑ´Ù. »ý¼ºÀÚ·Î Àü´ÞÇÏ´Â Àμö´Â ¸ðµÎ ÇÁ·ÎÆÛƼ·Îµµ
Á¤ÀǵǾî ÀÖ¾î ¾ðÁ¦µçÁö º¯°æ °¡´ÉÇÏ´Ù.
ÇÁ·ÎÆÛƼ |
ŸÀÔ |
¼³¸í |
Table |
DataTable |
ºä¸¦ ¸¸µç ¿øº» Å×À̺íÀÌ´Ù. |
RowFilter |
string |
ºä¿¡ Ç¥½ÃÇÒ ÇàÀ» ÇÊÅ͸µÇÏ´Â Á¶°Ç½ÄÀÌ´Ù. |
Sort |
string |
ºäÀÇ ÇàÀ» Ç¥½ÃÇÒ ¼ø¼¸¦ ÁöÁ¤ÇÑ´Ù. Á¤·Ä ±âÁØÀÌ µÉ ¿ À̸§°ú ¼ø¼¸¦ ÁöÁ¤ÇÏ´Â ASC, DESC µîÀ¸·Î ±¸¼ºµÈ´Ù. Á¤·Ä ¼ø¼¸¦ »ý·«ÇÏ¸é µðÆúÆ®´Â ASCÀÌ´Ù. |
RowStateFilter |
DataViewRowState |
Ç¥½ÃÇÒ ÇàÀÇ »óŸ¦ ÁöÁ¤ÇÑ´Ù. |
ApplyDefaultSort |
bool |
¿øº» Å×À̺íÀÇ ±âº» Á¤·Ä »óŸ¦ »ç¿ëÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. Sort ÇÁ·ÎÆÛƼ°¡ nullÀÌ°í Å×ÀÌºí¿¡ ±âº»Å°°¡ ÀÖÀ» ¶§¸¸ ÀÌ ÇÁ·ÎÆÛƼ°¡ »ç¿ëµÈ´Ù. |
Count |
int ÀÐ |
ÇÊÅÍ¿Í »óÅ°ªÀ» Àû¿ëÇÑ ÈÄÀÇ ·¹ÄÚµå °³¼öÀÌ´Ù. |
AllowNew |
bool |
AddNew ¸Þ¼µå·Î »õ ÇàÀ» Ãß°¡ÇÒ ¼ö ÀÖ´ÂÁö ÁöÁ¤ÇÑ´Ù. µðÆúÆ®´Â trueÀÌ´Ù. |
AllowDelete |
bool |
»èÁ¦¸¦ Çã¿ëÇÏ´ÂÁö ÁöÁ¤ÇÑ´Ù. |
AllowEdit |
bool |
ÆíÁýÀ» Çã¿ëÇÏ´ÂÁö ÁöÁ¤ÇÑ´Ù. |
ºäµµ °¡Â¥ Å×À̺íÀÌÁö¸¸ ·¹Äڵ带 º¸À¯ÇϹǷΠÆíÁýÇÒ ¼ö ÀÖ´Ù. ÆíÁý
¸Þ¼µå´Â Å×À̺íÀÇ °æ¿ì¿Í ºñ½ÁÇÏÁö¸¸ ÇüÅ°¡ Á¶±Ý ´Ù¸£´Ù.
public virtual DataRowView AddNew ()
public int Find (Object key)
public void Delete (int index)
Å×À̺íÀº NewRow ¸Þ¼µå·Î ÇàÀ» Ãß°¡Çϴµ¥ ºñÇØ ºä´Â AddNew ¸Þ¼µå·Î ÇàÀ» Ãß°¡ÇÏ¸ç ºä¿¡ ¼ÓÇÑ ÇàÀº DataRow°¡
¾Æ´Ñ DataRowView Ŭ·¡½º·Î Ç¥ÇöÇÑ´Ù. Find¿Í Delete´Â °Ë»ö °á°ú ¹× »èÁ¦ ´ë»óÀ» °´Ã¼·Î ÁöÁ¤ÇÏÁö ¾Ê°í Á¤¼ö·ÎµÈ ¼ø¼°ªÀ¸·Î ÁöÁ¤ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â µÎ °³ÀÇ ºä¸¦ »ç¿ëÇÏ¿© Å×À̺íÀÇ µ¥ÀÌÅ͸¦ µÎ °¡Áö ¹æ½ÄÀ¸·Î Ãâ·ÂÇÑ´Ù.
DataViewTest |
using
System; ~ using System.Windows.Forms; namespace
DataViewTest { public
partial class Form1 : Form { private
DataTable tblPeople; private
DataView ViewMan, ViewWoman; public
Form1() { InitializeComponent(); } private
void Form1_Load(object sender, EventArgs e) { tblPeople
= MakePeopleTable(); tblPeople.DefaultView.Sort
= "Age"; dataGridView1.DataSource
= tblPeople; ViewMan
= new DataView(tblPeople); ViewMan.RowFilter
= "Male = true"; ViewMan.Sort
= "Name"; //ViewMan.AllowNew
= false; //ViewMan.AllowDelete
= false; //ViewMan.AllowEdit
= false; dataGridView2.DataSource
= ViewMan; ViewWoman
= new DataView(tblPeople); ViewWoman.RowFilter
= "Male = false"; ViewWoman.Sort
= "Age"; dataGridView3.DataSource
= ViewWoman; } private
DataTable MakePeopleTable() { ============
»ý·« ============ } private
void btnAddNew_Click(object sender, EventArgs e) { DataRowView
NewPeople = ViewMan.AddNew(); NewPeople["Name"]
= "±è»óÇü"; NewPeople["Age"]
= 29; NewPeople["Male"]
= true; NewPeople.EndEdit(); } private
void btnUpdate_Click(object sender, EventArgs e) { int
idx = ViewMan.Find("¹è¿ëÁØ"); if
(idx != -1) { DataRowView
People = ViewMan[idx]; People.BeginEdit(); People["Name"]
= "¿æ»ç¸¶"; People.EndEdit(); } } } } |
ÇϳªÀÇ Å×À̺í°ú µÎ °³ÀÇ ºä¸¦ ¸â¹ö·Î ¼±¾ðÇß´Ù. Form1_Load¿¡¼ MakePeopleTable ¸Þ¼µå·Î tblPeople¸¦ »ý¼ºÇÏ°í
±âº» ºäÀÇ Sort ÇÁ·ÎÆÛƼ¿¡ Age¸¦ ´ëÀÔÇÏ¿© ³ªÀ̼øÀ¸·Î
Á¤·ÄÇÑ´Ù. ÀÌ Å×À̺íÀ» ±×¸®µå·Î Ãâ·ÂÇϸé Å×ÀÌºí¿¡ ÀúÀåµÈ ¼ø¼´ë·Î°¡ ¾Æ´Ñ ³ªÀ̼øÀ¸·Î Ãâ·ÂµÈ´Ù.
ÀÌ¾î¼ µÎ °³ÀÇ ºä °´Ã¼¸¦ »ý¼ºÇÏ°í RowFilter¿Í Sort ÇÁ·ÎÆÛƼ¸¦ °¢°¢ ´Ù¸£°Ô ÁöÁ¤Çß´Ù. ViewManÀº ³²ÀÚ¸¸
À̸§¼øÀ¸·Î Ãâ·ÂÇÏ°í ViewWomanÀº ¿©ÀÚ¸¸ ³ªÀ̼øÀ¸·Î Ãâ·ÂÇÏ¸ç µÎ ÄÁÆ®·ÑÀ» °¢°¢ÀÇ ±×¸®µå¿¡ ¹ÙÀεùÇß´Ù. ½ÇÇàÇØ º¸¸é tblPeopleÀ̶ó´Â ¶È°°Àº Å×À̺íÀÌ ÇÊÅÍ¿Í Á¶°Ç¿¡
µû¶ó ¼¼ °³ÀÇ ±×¸®µå¿¡ °¢°¢ ´Ù¸¥ ÇüÅ·ΠÃâ·ÂµÈ´Ù.
·¹ÄÚµå ¼ö°¡ ¸¹À¸¸é ºÐ¸® Ãâ·ÂÀÌ Å« µµ¿òÀÌ µÈ´Ù. ¸ÅÀÏ ¼ö õ°³ÀÇ
»óÇ° ÁÖ¹®ÀÌ ½ñ¾ÆÁö´Â ¼îÇθôÀº ¸ðµç ÁÖ¹®À» ÇϳªÀÇ Å×ÀÌºí¿¡ °°ÀÌ Ãâ·ÂÇß´Ù°¡´Â ¹¹°¡ ¹ºÁö ºÐ°£µµ ¾ÈµÇ°í È¥¶õ½º·´±â¸¸ ÇÏ´Ù. ÀÏÁ¤ÇÑ ±âÁØ¿¡ µû¶ó ·¹Äڵ带 ³ª´ ÇÊ¿ä°¡ Àִµ¥ ÁÖ¹®À» ÀÏÀÚº°·Î Ãâ·ÂÇϰųª ¿µ¾÷ ½ÇÀûÀ» ºÐ±âº°·Î »ÌÀ» ¶§ ºä°¡
½Ç¿ëÀûÀÌ´Ù.
ºä¿Í Å×À̺íÀº ¶È°°Àº ¿øº»À» ÂüÁ¶ÇÏ°í ÀÖ¾î ÇÑÂÊÀ» ÆíÁýÇÏ¸é µ¿±âȵȴÙ. Å×ÀÌºí¿¡¼
ÇàÀ» ÆíÁýÇÏ¸é ¿¬°áµÈ ¸ðµç ºä¿¡ ¹Ý¿µµÇ¸ç ¹Ý´ëµµ ¸¶Âù°¡ÁöÀÌ´Ù. ¿¹¸¦ µé¾î Àüü ±×¸®µå¿¡¼ À嵿°ÇÀ» Ãß°¡Çϸé
³²ÀÚ ±×¸®µå¿¡ ³ªÅ¸³ª°í °í¼Ò¿µÀ» »èÁ¦ÇÏ¸é ¿©ÀÚ ±×¸®µå¿¡¼µµ »èÁ¦µÈ´Ù. Á¤¿ì¼ºÀÇ Male¿À» false·Î ¹Ù²Ù¸é ³²ÀÚ ±×¸®µåÀÇ Á¤¿ì¼ºÀÌ ¿©ÀÚ ±×¸®µå·Î
À̵¿ÇÑ´Ù.
Àüü ±×¸®µå¿¡¼ °í¼Ò¿µÀÇ ³ªÀ̸¦ 25¼¼·Î ¼öÁ¤ÇÏ¸é ³ªÀ̼øÀ¸·Î Á¤·ÄµÇ´Â
¿©ÀÚ ±×¸®µåÀÇ ·¹ÄÚµå ¼ø¼°¡ ¹Ù²ï´Ù. ºä¸¦ ÆíÁýÇصµ ¸¶Âù°¡Áö·Î ¸ðµç ±×¸®µå¿¡ Àû¿ëµÈ´Ù. ¾î¶² ±×¸®µå¿¡¼ ÆíÁýÀ» ÇÏ°Ç ±× °á°ú´Â ¿øº» Å×ÀÌºí¿¡ ¹Ý¿µµÇ°í °¢ ºä´Â ÀÚ½ÅÀÇ ÇÊÅÍ¿Í Á¤·Ä Á¶°Ç¿¡ µû¶ó ¿øº»ÀÇ
º¯È¸¦ ¹Ý¿µÇϹǷΠºäÀÇ Ãâ·Â °á°ú´Â Ç×»ó Á¤È®ÇÏ´Ù.
»ç¿ëÀÚÀÇ ÆíÁý Çã¿ë ¿©ºÎ¸¦ ÁöÁ¤ÇÏ´Â AllowNew, AllowDelete,
AllowEdit ÇÁ·ÎÆÛƼÀÇ µðÆúÆ®´Â ¸ðµÎ trueÀÌ´Ù.
±×·¡¼ º°´Ù¸¥ ÁöÁ¤ÀÌ ¾øÀ¸¸é ±×¸®µå¸¦ ÅëÇØ ·¹Äڵ带 »ðÀÔ, »èÁ¦, ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀÌ ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù¸é ¼¼ °³ÀÇ ÇÁ·ÎÆÛƼ¸¦ Àû´çÈ÷
Á¶Á¤ÇÑ´Ù. ºä¸¦ ´Ü¼øÈ÷ º¸±â¿ëÀ¸·Î¸¸ »ç¿ëÇÏ·Á¸é ¼¼ ÇÁ·ÎÆÛƼ¸¦ ¸ðµÎ
false·Î ¹Ù²Ù°í, ÆíÁýÀº Çã¿ëÇ쵂 »ðÀÔ, »èÁ¦´Â
±ÝÁöÇÏ·Á¸é AllowEdit¸¸ true·Î µÎ¸é µÈ´Ù.
Å×À̺íÀº ¿øÄ¢ÀûÀ¸·Î ¸ðµç µ¿ÀÛÀÌ Çã¿ëµÇÁö¸¸ ºä´Â °³º° µ¿ÀÛÀ» ÇÁ·ÎÆÛƼ·Î ¼±Åà °¡´ÉÇÏ´Ù. ÀϺΠ±â´É¸¸ ±ÝÁöÇÏ°íÀÚ ÇÑ´Ù¸é Å×À̺íÀ» Á÷Á¢ ¹ÙÀεùÇÏÁö ¸»°í ±âº»ºä³ª º°µµÀÇ ºä¸¦ ¸¸µç ÈÄ AllowNew, AllowDelete, AllowEdit¸¦ Àû´çÈ÷ Á¶Á¤ÇÏ¿© ºä¸¦ ±×¸®µå¿¡ ¹ÙÀεùÇÑ´Ù. ±×¸®µå´Â ¹ÙÀεùµÈ Å×À̺íÀ̳ª ºä¿¡ ¾î¶² µ¿ÀÛÀÌ Çã¿ëµÇ´ÂÁö Á¡°ËÇÏ¿© Çã¿ëµÈ ÀԷ¸¸ ¹Þ¾ÆµéÀδÙ. ´ÙÀ½Àº ViewManÀÇ
Allow* ÇÁ·ÎÆÛƼ¸¦ ¸ðµÎ false·Î ¹Ù²Û ¸ð¾çÀÌ´Ù.
³²ÀÚ ±×¸®µåÀÇ ¾Æ·¡ÂÊ¿¡ ºóÄÀÌ ¾ø¾î »õ·Î¿î ·¹Äڵ带 Ãß°¡ÇÒ ¼ö ¾øÀ¸¸ç F2¸¦
´·¯µµ ÆíÁý ¸ðµå·Î ÀüȯÇÏÁö ¾Ê°í DelÅ°¸¦ ´·¯µµ ¾Æ¹« ¹ÝÀÀÀÌ ¾ø´Ù.
Äڵ忡¼ ºä¸¦ ÅëÇØ ·¹Äڵ带 ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù. ºäÀÇ
AddNew ¸Þ¼µå¸¦ È£ÃâÇÏ¿© DataRowView °´Ã¼¸¦ »ý¼ºÇÏ°í Àε¦¼¸¦ ÅëÇØ Ä÷³°ªÀ»
´ëÀÔÇÑ´Ù. Å×À̺íÀÇ NewRow ¸Þ¼µå¿Í ºñ½ÁÇ쵂 »ðÀÔ ÈÄ EndEdit ¸Þ¼µå¸¦ È£ÃâÇØ¾ß »ðÀÔ ¹× ¼öÁ¤ ³»¿ëÀÌ ¿øº» Å×ÀÌºí¿¡ ¹Ý¿µµÇ¸ç
CancelEdit¸¦ È£ÃâÇϸé Ãë¼ÒµÈ´Ù.
¿¹Á¦ÀÇ AddNew ¹öÆ° Çڵ鷯¿¡ ºä¸¦ ÅëÇÑ ·¹ÄÚµå »ðÀÔ Äڵ尡 ÀÛ¼ºµÇ¾î
ÀÖ´Ù. ¹öÆ°À» ´©¸£¸é 29¼¼ÀÇ ±è»óÇü¾¾°¡ ³²ÀÚ ±×¸®µå¿¡ »ðÀԵǸç
Àüü ±×¸®µå¿¡µµ ´ç¿¬È÷ »õ ·¹Äڵ尡 ³ªÅ¸³´Ù. ´Ü, ¿¡·¯
󸮴 ÇÏÁö ¾Ê¾Æ µÎ ¹ø ´©¸£¸é ±âº»Å° Ãæµ¹·Î ÀÎÇØ ¿¹¿Ü°¡ ¹ß»ýÇÑ´Ù.
Update ¹öÆ°À» ´©¸£¸é ºä¿¡¼ ¹è¿ëÁØÀ» ã¾Æ À̸§À» ¿æ»ç¸¶·Î ¼öÁ¤ÇÑ´Ù. ºä´Â Á¤·Ä Å°¿¡ ´ëÇØ À妽º¸¦ »ý¼ºÇϹǷΠ°Ë»ö ¼Óµµ°¡ ºü¸£´Ù. °Ë»öµÈ
ÇàÀÇ ¼ø¼°ªÀ» ¸®ÅÏÇϸç Á¶°Ç¿¡ ¸Â´Â ÇàÀÌ ¾øÀ¸¸é -1À» ¸®ÅÏÇÑ´Ù. ¼ø¼°ªÀ»
ºäÀÇ Àε¦¼·Î Àü´ÞÇϸé DataRowView °´Ã¼¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ÀÌ
°´Ã¼ÀÇ ¿°ªÀ» ¿øÇϴ´ë·Î ´ëÀÔÇ쵂 ÆíÁý Àü¿¡ BeginEdit¸¦ È£ÃâÇÏ°í ÆíÁýÀÌ ³¡³ ÈÄ EndEdit¸¦ È£ÃâÇÑ´Ù.
ºäÀÇ RowFilter ÇÁ·ÎÆÛƼ´Â ·¹ÄÚµåÀÇ Ä÷³°ªÀ» ±âÁØÀ¸·Î ÇÊÅ͸µÇÑ´Ù. ¿¹¸¦ µé¾î ³²ÀÚ¸¸ ¶Ç´Â ³ªÀÌ°¡ ¸î »ì ÀÌ»ó µîÀÇ ±âÁØÀ» ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç
SQLÀÇ WHERE Á¶°Ç¹®°ú ºñ½ÁÇÏ´Ù. ÀÌ¿¡
ºñÇØ RowStateFilter ÇÁ·ÎÆÛƼ´Â °ªÀÌ ¾Æ´Ñ »óÅ°ªÀ¸·Î ÇÊÅ͸µÇÏ¿© ƯÁ¤ »óÅÂÀÇ Çุ ºä·Î Ãâ·ÂÇÒ
¼ö ÀÖ´Ù. ÇàÀÇ °¡´ÉÇÑ »óÅ°ªÀº ´ÙÀ½°ú °°Àºµ¥ DataTableÀÇ RowState ÇÁ·ÎÆÛƼº¸´Ù Á¾·ù°¡ ´õ ¸¹´Ù.
RowStateFilter ¿°Å°ª |
¼³¸í |
Added |
»õ·Î Ãß°¡µÈ Çà |
CurrentRows |
º¯°æµÇÁö ¾ÊÀº Çà, »õ Çà ¹× ¼öÁ¤µÈ ÇàÀ» Æ÷ÇÔÇÑ´Ù. |
Deleted |
»èÁ¦µÈ Çà |
ModifiedCurrent |
¼öÁ¤µÈ ÇàÀÇ ÇöÀç°ª |
ModifiedOriginal |
¼öÁ¤µÈ ÇàÀÇ ¼öÁ¤Àü °ª |
None |
¾øÀ½ |
OriginalRows |
º¯°æµÇÁö ¾ÊÀº Çà°ú »èÁ¦µÈ Çà |
Unchanged |
º¯°æµÇÁö ¾ÊÀº Çà |
»ç¿ëÀÚ°¡ Á÷Á¢ ÆíÁýÇÏ°Ç ÄÚµå·Î ÆíÁýÇÏ°Ç ·¹Äڵ忡 Á¶±ÝÀÌ¶óµµ º¯°æÀÌ °¡ÇØÁö¸é »óÅ°¡ ¹Ù²ï´Ù. ·¹Äڵ带 Áö¿öµµ »óŸ¸ Deleted·Î ¹Ù²î¸ç ¼öÁ¤ÇÒ °æ¿ì ¼öÁ¤ÀüÀÇ
°ª°ú ¼öÁ¤ÈÄÀÇ °ªÀ» ¸ðµÎ °¡Áø´Ù. ÀÌ·¸°Ô µÇ¾î ÀÖ´Â ÀÌÀ¯´Â
DataSetÀÌ ºñ¿¬°áÇüÀ¸·Î µ¿ÀÛÇϹǷΠÀÌÈÄ ¼¹ö¿Í µ¿±âÈÇÒ ¶§ ¾î¶² °ÍÀÌ Ãß°¡µÈ °ÍÀÌ°í ¹«¾ùÀÌ ¾î¶»°Ô ¹Ù²î¾ú´ÂÁö ¾Ë¾Æ¾ß Çϱ⠶§¹®ÀÌ´Ù.
DataSetÀº µ¥ÀÌÅÍ »Ó¸¸ ¾Æ´Ï¶ó »èÁ¦µÈ °Í°ú º¯°æµÈ °Í±îÁö µ¥ÀÌÅÍÀÇ
¸ðµç º¯°æ ³»¿ªÀ» »óÅ°ªÀ¸·Î ÀúÀåÇÑ´Ù. ÀÌ »óÅ°ªÀ» ºä¿¡ È°¿ëÇϸé Å×À̺íÀÇ ÇöÀç ·¹ÄÚµå»Ó¸¸ ¾Æ´Ï¶ó ÆíÁý
³»¿ª±îÁö »ó¼¼ÇÏ°Ô Ãâ·ÂÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¾Õ ¿¹Á¦¿Í ºñ½ÁÇ쵂 »õ·Î Ãß°¡µÈ °Í°ú »èÁ¦µÈ °Í¸¸À¸·Î
ºä¸¦ ±¸¼ºÇÏ¿© ±×¸®µå·Î Ãâ·ÂÇÑ´Ù.
RowStateTest |
using
System; ~ using System.Windows.Forms; namespace
RowStateTest { public
partial class Form1 : Form { private
DataTable tblPeople; private
DataView ViewIns, ViewDel; public
Form1() { InitializeComponent(); } private
void Form1_Load(object sender, EventArgs e) { tblPeople
= MakePeopleTable(); dataGridView1.DataSource
= tblPeople; ViewIns
= new DataView(tblPeople); ViewIns.RowStateFilter
= DataViewRowState.Added; dataGridView2.DataSource
= ViewIns; ViewDel
= new DataView(tblPeople); ViewDel.RowStateFilter
= DataViewRowState.Deleted; dataGridView3.DataSource
= ViewDel; } private
DataTable MakePeopleTable() { ============
»ý·« ============ } } } |
µÎ °³ÀÇ ºä¸¦ »ý¼ºÇ쵂 ViewIns´Â Added »óÅÂÀÇ ·¹Äڵ常 Ãâ·ÂÇÏ°í ViewDelÀº Deleted »óÅÂÀÇ ·¹Äڵ常 Ãâ·ÂÇÑ´Ù. ÃÖÃÊ Å×À̺íÀÌ »ý¼ºµÉ ¶§´Â
¸ðµç ·¹Äڵ尡 Unchanged »óÅÂÀ̹ǷΠÀ§ÂÊÀÇ Àüü ±×¸®µå¿¡¸¸ Ãâ·ÂµÈ´Ù. ÀÌ »óÅ¿¡¼ À嵿°ÇÀ» »õ·Î Ãß°¡ÇÏ°í ¹è¿ëÁØÀ» »èÁ¦ÇØ º¸ÀÚ.
À嵿°ÇÀº Àüü ±×¸®µå¿¡µµ ³ªÅ¸³ª°í ¿ÞÂÊÀÇ »õ·Î Ãß°¡µÈ °Í ±×¸®µå¿¡µµ ³ªÅ¸³´Ù.
¹è¿ëÁØÀº Àüü ±×¸®µå¿¡¼ »ç¶óÁöÁö¸¸ ¿À¸¥ÂÊÀÇ »èÁ¦µÈ °Í ±×¸®µå·Î ÀÚ¸®¸¦ ¿Å±ä´Ù. ¹è¿ëÁØÀÌ
Å×ÀÌºí¿¡¼ ¿ÏÀüÈ÷ »èÁ¦µÈ °ÍÀÌ ¾Æ´Ï¶ó »èÁ¦ Ç¥½Ã¸¸ µÈ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ºä¿Í »óÅ ÇÊÅ͸¦ È°¿ëÇϸé
ÀÌ·± ½ÄÀ¸·Î ·¹ÄÚµåÀÇ »óÅ¿¡ µû¶ó ¿øº» Å×À̺íÀÇ º¯È¸¦ ´Ù¾çÇÏ°Ô °üÂûÇÒ ¼ö ÀÖ´Ù.
¼ö½Ã·Î ÀÔ°í, Ãâ°íµÇ´Â »óÇ° Å×À̺íÀ» »ý°¢ÇØ º¸ÀÚ. Àüü Å×ÀÌºí¿¡´Â ÇöÀç º¸À¯ÁßÀÎ »óÇ° ¸ñ·ÏÀÌ ³ªÅ¸³ª¸ç »õ ±×¸®µå¿¡´Â »õ·Î ÀÔ°íµÈ °Í¸¸ Ãâ·ÂµÇ°í »èÁ¦ ±×¸®µå¿¡´Â
Æȸ° »óÇ°¸¸ Ãâ·ÂµÈ´Ù. Àϸñ¿ä¿¬Çؼ º¸±â¿¡ ±ò²ûÇÒ »Ó¸¸ ¾Æ´Ï¶ó µÎ ºäÀÇ »óÇ°¿¡ ´ëÇÑ Åë°è¸¸ ³»µµ ÃѸÅÀÔ, ÃѸÅÃâÀ» °£´ÜÇÏ°Ô °è»êÇÒ ¼ö ÀÖ´Ù.
Çö½ÇÀÇ ¾÷¹«¸¦ Á¦´ë·Î ó¸®ÇÏ·Á¸é Àû¾îµµ 10°³ Á¤µµÀÇ Å×À̺íÀÌ ÇÊ¿äÇÏ°í
´õ Å« ÇÁ·ÎÁ§Æ®¿¡¼´Â 100°³ ÀÌ»óÀÇ Å×À̺íÀÌ º¹ÀâÇÑ °ü°è¸¦ ±¸¼ºÇÑ´Ù.
ÀÌ·± °Å´ëÇÑ µ¥ÀÌÅͺ£À̽º´Â Å×À̺íÀÌ ¸¹¾Æ °ü¸®Çϱ⠽±Áö ¾ÊÀºµ¥ ¿©±â¿¡ Å×ÀÌºí¸¶´Ù ºä¸¦ ÇÑ µÎ °³¾¿ ´õ »ý¼ºÇÏ¸é º¹Àâµµ°¡ ³ô¾ÆÁø´Ù.
±×·¡¼ ´å³ÝÀº ºä¸¦ Áß¾Ó¿¡¼ °ü¸®Çϱâ À§ÇÑ ºä °ü¸® Àü¹® °´Ã¼ÀÎ
DataViewManager¸¦ Á¦°øÇÑ´Ù. À̸§ÀÌ ÀǹÌÇϵíÀÌ ¸Å´ÏÀú´Â º¹¼ö °³ÀÇ ºä¸¦ °ü¸®ÇÏ´Â
¿ªÇÒÀ» ÇÏ¸ç °³º° ºäÀÇ ¼³Á¤ »óÅÂÀÎ DataViewSettingÀ» º¸À¯ÇÑ´Ù. DataViewSetting °´Ã¼´Â ºä Çϳª¿¡ ¿¬°áµÇ¾î ºäÀÇ ÇÊÅÍ, Á¤·Ä, »óÅ ÇÊÅÍ µî¿¡ ´ëÇÑ °ªÀ» ÀúÀåÇÏ¸ç ¸Å´ÏÀú´Â ÀÌ·± ¼³Á¤ »óŸ¦ Ä÷º¼ÇÀ¸·Î °ü¸®ÇÑ´Ù.
DataSet Ŭ·¡½ºÀÇ
DefaultViewManager ÇÁ·ÎÆÛƼ·Î ±âº» ¸Å´ÏÀú °´Ã¼¸¦ ±¸ÇØ ¾µ ¼ö ÀÖ°í ¾Æ´Ï¸é º°µµÀÇ ¸Å´ÏÀú¸¦ »ý¼ºÇÒ ¼öµµ ÀÖ´Ù. ÃÊ´ëÇü ÇÁ·ÎÁ§Æ®¿¡¼ ´Ù¼öÀÇ ºä¸¦ È¿À²ÀûÀ¸·Î °ü¸®Çϱâ À§ÇÑ ÀåÄ¡À̹ǷΠÁß¼ÒÇü ÇÁ·ÎÁ§Æ®¿¡´Â ½Ç¿ë¼ºÀÌ ³ôÁö ¾Ê´Ù. ±íÀÌ µé¾î°¡¸é º¹ÀâÇØÁö¹Ç·Î °£´ÜÇÏ°Ô ¿¹Á¦¸¦ ¸¸µé¾î ±¸°æ¸¸ ÇØ º¸ÀÚ.
ViewManagerTest |
using
System; ~ using System.Windows.Forms; namespace
ViewManagerTest { public
partial class Form1 : Form { private
DataSet DbADOTest; private
DataTable tblPeople, tblSale; public
Form1() { InitializeComponent(); } private
void Form1_Load(object sender, EventArgs e) { DbADOTest
= new DataSet("DbADOTest"); tblPeople
= MakePeopleTable(); tblSale
= MakeSaleTable(); DbADOTest.Tables.Add(tblPeople); DbADOTest.Tables.Add(tblSale); //
¸Å´ÏÀú¸¦ ÅëÇÑ ºä ¼³Á¤ DataViewManager
vm = new DataViewManager(DbADOTest); vm.DataViewSettings["tblPeople"].Sort
= "Name"; vm.DataViewSettings["tblSale"].RowFilter
= "OrderNo > 1"; //
»õ·Î¿î ºä »ý¼º DataView
ViewMan = vm.CreateDataView(tblPeople); ViewMan.RowFilter
= "Male = true"; ViewMan.Sort
= "Age DESC"; foreach
(DataViewSetting vs in vm.DataViewSettings) { listBox1.Items.Add(string.Format("Å×À̺í:{0}, ÇÊÅÍ:{1}, Á¤·Ä:{2},
»óÅÂ:{3}", vs.Table,
vs.RowFilter, vs.Sort, vs.RowStateFilter)); } dataGridView1.DataSource
= vm; dataGridView1.DataMember
= "tblPeople"; dataGridView2.DataSource
= vm; dataGridView2.DataMember
= "tblSale"; dataGridView3.DataSource
= ViewMan; } private
DataTable MakePeopleTable() { ============
»ý·« ============ } private
DataTable MakeSaleTable() { ============
»ý·« ============ } } } |
µÎ °³ÀÇ Å×À̺íÀ» °¡Áö´Â µ¥ÀÌÅÍ ÁýÇÕÀ» »ý¼ºÇÏ°í ¸Å´ÏÀúµµ Çϳª »ý¼ºÇß´Ù. µ¥ÀÌÅÍ
ÁýÇÕÀÇ °¢ Å×ÀÌºí¿¡ ´ëÇÑ ºä¸¦ ¾×¼¼½ºÇϱâ À§ÇØ vmÀ» °æÀ¯ÇÑ´Ù.
tblPeople¿¡ ´ëÇÑ ºä´Â À̸§¼øÀ¸·Î Á¤·ÄÇÏ°í tblSaleÀº ÁÖ¹® ¹øÈ£°¡ 1 ÃÊ°úÀÎ °Í¸¸ Ãâ·ÂÇß´Ù. ¸Å´ÏÀúÀÇ
CreateDataView ¸Þ¼µå¸¦ È£ÃâÇÏ¸é »õ·Î¿î ºä¸¦ »ý¼ºÇÒ ¼öµµ ÀÖ´Ù. ·çÇÁ¸¦ µ¹¸ç
¸Å´ÏÀú°¡ °ü¸®ÇÏ´Â ºäÀÇ ¼³Á¤ »óŸ¦ ¸®½ºÆ® ¹Ú½º¿¡ Ãâ·ÂÇØ º¸¾Ò´Ù.
¸Å´ÏÀú´Â ¹ÙÀεùÀÇ ÀÌÁ¡µµ Á¦°øÇϴµ¥ °¢ Å×À̺íÀ» ¹ÙÀεùÇÏ´Â ´ë½Å ¸Å´ÏÀú¸¦ ¹ÙÀεùÇÑ ÈÄ ¸Å´ÏÀúÀÇ ºä¸¦ DataMember·Î ÁöÁ¤Çϸé ÀÌ ºäÀÇ ¼³Á¤´ë·Î ±×¸®µå¿¡ Ãâ·ÂµÈ´Ù. ¸Å´ÏÀú°¡
Áß¾Ó¿¡¼ ºä¸¦ °ü¸®ÇϹǷΠ¿©·¯ Å×À̺íÀÇ º¸±â »óŸ¦ ÀÏ°ýÀûÀ¸·Î ¼öÁ¤ÇÒ ¼ö ÀÖ°í ÄÁÆ®·Ñ¿¡ ¹ÙÀεùÇÒ ¶§µµ ¸Å´ÏÀú¸¦ ÅëÇÏ¸é µÈ´Ù. °¢ ±×¸®µå´Â ¸Å´ÏÀú°¡ °ü¸®ÇÏ´Â ºäÀÇ Áö½Ã¸¦ Àß µû¸¥´Ù.
ADO.NETÀÇ ºä´Â Å×À̺íÀÇ ÀϺθ¦ º»´Ù´Â Á¡¿¡¼ °ü°èÇü DBÀÇ ºä¿Í °³³äÀº ºñ½ÁÇÏÁö¸¸ ½ÇÁ¦·Î´Â ¸¹ÀÌ ´Ù¸£´Ù. ¼¹ö°¡ Á¤ÀÇÇÏ´Â
ºä¿Í´Â ´Þ¸® DataView´Â ÀϺΠ¿¸¸ °¡Áö´Â ¼öÁ÷ ºä¸¦ ¸¸µé ¼ö ¾ø°í ¿©·¯ Å×À̺í·ÎºÎÅÍ Á¶ÀÎÇÑ °á°ú¸¦
°¡Áú ¼öµµ ¾ø´Ù. ¿À·ÎÁö ÇÑ Å×ÀÌºí¿¡ ´ëÇÑ µ¿Àû ºä¸¸ Á¦°øÇÑ´Ù. ´ë½Å
¼¹öÀÇ ºä¿Í´Â ´Þ¸® ·¹ÄÚµåÀÇ »óÅ¿¡ µû¶ó ÇÊÅ͸¦ ±¸¼ºÇÏ´Â ´É·ÂÀÌ ÀÖ´Ù.
Á» ÀÌ»óÇÏ°Ô µé¸±Áö ¸ð¸£°Ú´Âµ¥ ¼¹öÀÇ ºä¿Í Á÷Á¢ÀûÀ¸·Î ´ëÀÀµÇ´Â ADO.NETÀÇ
Ŭ·¡½º´Â DataView°¡ ¾Æ´Ï¶ó DataTableÀÌ´Ù. °ü°èÇü DBÀÇ ºä´Â µ¿ÀûÀ¸·Î »ý¼ºµÇ´Â °¡Â¥ Å×À̺íÀÌÁö¸¸ Ŭ¶óÀ̾ðÆ®¿¡¼
º¸±â¿¡´Â Å×À̺í°ú µ¿ÀÏÇÏ´Ù. ¼¹öÀÇ ºä´Â °¡Â¥ Å×À̺íÀÌÁö¸¸ Ŭ¶óÀ̾ðÆ® ÀÔÀå¿¡¼´Â ÁøÂ¥ Å×À̺íó·³ º¸¿©¾ß
ÇÑ´Ù. ´ÙÀ½¿¡ ¸¶¹ý»ç·Î ºä¸¦ ÀÓÆ÷Æ®ÇØ º¸¸é Å×À̺í·Î ±¸ÇöµÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.