DataRow, DataTable, DataSet

SaGo_MunGcci·2022년 11월 28일
0

C#

목록 보기
8/27

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DataTable_Example_00
{

    public partial class Form1 : Form
    {

        DataSet ds = new DataSet(); // 학급에 대한 정보를 가지고 있는 dataSet

        public Form1()
        {
            InitializeComponent();
        }

        private void btnReg_Click(object sender, EventArgs e)
        {

            // 이미 우리가 코드를 작성하면서 1,2,3반이라는 형식의 테이블이 생성되어 있다.
            bool bCheckisTable = false;

            if (ds.Tables.Contains(cboxRegClass.Text))
            {
                bCheckisTable = true;
            }


            DataTable dt = null;


            if (bCheckisTable == false)
            {
                dt = new DataTable(cboxRegClass.Text); // 해당 테이블의 이름

                DataColumn colName = new DataColumn("NAME", typeof(String)); // 컬럼 이름, 벨류
                DataColumn colSex = new DataColumn("SEX", typeof(String)); // 컬럼 이름, 벨류
                DataColumn colRef = new DataColumn("REF", typeof(String)); // 컬럼 이름, 벨류

                dt.Columns.Add(colName);
                dt.Columns.Add(colSex);
                dt.Columns.Add(colRef);


            }
            else
            {

                dt = ds.Tables[cboxRegClass.Text];

            }

            // Row 생성
            DataRow row = dt.NewRow();

            row["NAME"] = tboxRegName.Text;

            if (rdoRegSexMale.Checked)
            {
                row["SEX"] = rdoRegSexMale.Text;
                Console.WriteLine(rdoRegSexMale.Text);

            }
            else
            {
                row["SEX"] = rdoRegSexFemale.Text;
                Console.WriteLine(rdoRegSexFemale.Text);
            }

            row["REF"] = tboxRegRef.Text;

            // 생성된 row를 Table에 등록
            // dt.Rows.Add(row);


            if (bCheckisTable == true)
            {
                ds.Tables[cboxRegClass.Text].Rows.Add(row);
            }
            else
            {
                dt.Rows.Add(row);
                ds.Tables.Add(dt);
            }

            // 이벤트 핸들러도 함수처럼 쓸수 있다..
            cboxViewClass_SelectedIndexChanged(this, null);

        }

        private void btnViewDataDel_Click(object sender, EventArgs e)
        {
                  
            // 내가 원하는 열들을 다중선택하는 기능
            foreach (DataGridViewRow row in this.dgViewInfo.SelectedRows)
            {
                // 선택된 열들의 인덱스로 반복문으로 다중삭제
                ds.Tables[cboxViewClass.Text].Rows.RemoveAt(row.Index);

            }           


            //int iSelectRow = dgViewInfo.SelectedRows[0].Index;   // 선택 한 Row 중에서 첫번째 Row번호를 가져온다

            //ds.Tables[cboxViewClass.Text].Rows.RemoveAt(iSelectRow);   // Table에서 선택한 Row를 삭제 한다

            cboxViewClass_SelectedIndexChanged(this, null);
        }

        // 해당 콤보박스의 컨텐츠를 입력하면 입력한 dataset중에서 해당 테이블을 찾아서 출력
        private void cboxViewClass_SelectedIndexChanged(object sender, EventArgs e)
        {
            // cboxRegClass.Text로 등록한 테이블이 출력된다
            dgViewInfo.DataSource = ds.Tables[cboxViewClass.Text];


            // DatagridView Cell 정렬 Number를 적용
            foreach (DataGridViewRow oRow in dgViewInfo.Rows)
            {
                oRow.HeaderCell.Value = oRow.Index.ToString();
            }
            dgViewInfo.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);

        }

        // 해당 콤

    }
}

참고 : https://cwkcw.tistory.com/122

profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글