32-2.µ¥ÀÌÅÍ ºä

32-2-1.DataView

Å×À̺íÀ» ±×¸®µå¿¡ ¹ÙÀεùÇÏ¸é ¸ðµç ·¹Äڵ尡 ÀúÀåµÈ ¼ø¼­´ë·Î Ãâ·ÂµÈ´Ù. Ãâ·ÂÇÒ ·¹Äڵ带 Á¦ÇÑÇϰųª Á¤·Ä »óŸ¦ ÁöÁ¤ÇÏ·Á¸é ºä¸¦ »ç¿ëÇÑ´Ù. ºä´Â ÇÊÅÍ Á¶°Ç, Á¤·Ä ±âÁØ, ÇàÀÇ »óÅ°ª µîÀÇ ¿©·¯ °¡Áö Á¶°Ç¿¡ ÀÇÇØ Å×À̺íÀÇ ·¹ÄÚµå Áß ÀϺθ¸ º¸À¯ÇÏ´Â °¡Â¥ Å×À̺íÀÌ´Ù. ºä¸¦ »ý¼ºÇÑ ÈÄ ±×¸®µå¿¡ ¹ÙÀεùÇϸé Å×À̺íÀ» ´Ù¸¥ ÇüÅ·ΠÃâ·ÂÇÒ ¼ö ÀÖ´Ù.

Á¶°Ç¿¡ ¸Â´Â ·¹Äڵ常 ¼±ÅÃÇϰųª Á¤·ÄÇÏ·Á¸é 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¸¦ È£ÃâÇÑ´Ù.

32-2-2.»óÅ¿¡ µû¸¥ ºä

ºäÀÇ 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 »óÅÂÀ̹ǷΠÀ§ÂÊÀÇ Àüü ±×¸®µå¿¡¸¸ Ãâ·ÂµÈ´Ù. ÀÌ »óÅ¿¡¼­ À嵿°ÇÀ» »õ·Î Ãß°¡ÇÏ°í ¹è¿ëÁØÀ» »èÁ¦ÇØ º¸ÀÚ.

À嵿°ÇÀº Àüü ±×¸®µå¿¡µµ ³ªÅ¸³ª°í ¿ÞÂÊÀÇ »õ·Î Ãß°¡µÈ °Í ±×¸®µå¿¡µµ ³ªÅ¸³­´Ù. ¹è¿ëÁØÀº Àüü ±×¸®µå¿¡¼­ »ç¶óÁöÁö¸¸ ¿À¸¥ÂÊÀÇ »èÁ¦µÈ °Í ±×¸®µå·Î ÀÚ¸®¸¦ ¿Å±ä´Ù. ¹è¿ëÁØÀÌ Å×ÀÌºí¿¡¼­ ¿ÏÀüÈ÷ »èÁ¦µÈ °ÍÀÌ ¾Æ´Ï¶ó »èÁ¦ Ç¥½Ã¸¸ µÈ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ºä¿Í »óÅ ÇÊÅ͸¦ È°¿ëÇϸé ÀÌ·± ½ÄÀ¸·Î ·¹ÄÚµåÀÇ »óÅ¿¡ µû¶ó ¿øº» Å×À̺íÀÇ º¯È­¸¦ ´Ù¾çÇÏ°Ô °üÂûÇÒ ¼ö ÀÖ´Ù.

¼ö½Ã·Î ÀÔ°í, Ãâ°íµÇ´Â »óÇ° Å×À̺íÀ» »ý°¢ÇØ º¸ÀÚ. Àüü Å×ÀÌºí¿¡´Â ÇöÀç º¸À¯ÁßÀÎ »óÇ° ¸ñ·ÏÀÌ ³ªÅ¸³ª¸ç »õ ±×¸®µå¿¡´Â »õ·Î ÀÔ°íµÈ °Í¸¸ Ãâ·ÂµÇ°í »èÁ¦ ±×¸®µå¿¡´Â Æȸ° »óÇ°¸¸ Ãâ·ÂµÈ´Ù. Àϸñ¿ä¿¬Çؼ­ º¸±â¿¡ ±ò²ûÇÒ »Ó¸¸ ¾Æ´Ï¶ó µÎ ºäÀÇ »óÇ°¿¡ ´ëÇÑ Åë°è¸¸ ³»µµ ÃѸÅÀÔ, ÃѸÅÃâÀ» °£´ÜÇÏ°Ô °è»êÇÒ ¼ö ÀÖ´Ù.

32-2-3.DataViewManager

Çö½ÇÀÇ ¾÷¹«¸¦ Á¦´ë·Î ó¸®ÇÏ·Á¸é Àû¾îµµ 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ÀÇ ºä´Â µ¿ÀûÀ¸·Î »ý¼ºµÇ´Â °¡Â¥ Å×À̺íÀÌÁö¸¸ Ŭ¶óÀ̾ðÆ®¿¡¼­ º¸±â¿¡´Â Å×À̺í°ú µ¿ÀÏÇÏ´Ù. ¼­¹öÀÇ ºä´Â °¡Â¥ Å×À̺íÀÌÁö¸¸ Ŭ¶óÀ̾ðÆ® ÀÔÀå¿¡¼­´Â ÁøÂ¥ Å×À̺íó·³ º¸¿©¾ß ÇÑ´Ù. ´ÙÀ½¿¡ ¸¶¹ý»ç·Î ºä¸¦ ÀÓÆ÷Æ®ÇØ º¸¸é Å×À̺í·Î ±¸ÇöµÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.