BLOG main image
분류 전체보기 (65)
JSP (6)
Android (1)
ASP.NET (0)
MSSQL (4)
PHP (18)
ASP (11)
오픈 API (1)
HTML (2)
JavaScript (0)
Windows Programming (8)
컴퓨터교양 (14)
객체 지향 (0)
리뷰 및 생각 (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2013. 9. 18. 21:16

 

DataGridViewButtonAdd.zip

     public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 데이터 소스 생성
            List productList = new List() { 
                new Product { ID=1, Name="빨간모자" },
                new Product { ID=2, Name="주황모자" },
                new Product { ID=3, Name="노랑모자" }
            };

            // 그리드뷰에 데이터 소스 바인딩
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = productList;

            // 그리드뷰에 버튼 컬럼 추가
            // - 버튼을 추가하는 것이 아니라
            // - 버튼 모양을 하고 있는 컬럼(셀)을 추가하는 것이다.
            DataGridViewButtonColumn btnColumn = new DataGridViewButtonColumn();
            btnColumn.HeaderText = "ButtonColumn";
            btnColumn.Name = "buttonColumn";
            btnColumnIdx = dataGridView1.Columns.Add(btnColumn);

            // 버튼 모양의 셀에 텍스트 설정
            // - 버튼 자체에 텍스트를 설정할 수는 없다.
            // - 왜냐하면 실제로는 버튼이 아니기 때문이다.
            // - 버튼 모양을 하고 있는 셀이다.
            foreach (DataGridViewRow row in dataGridView1.Rows)
                row.Cells[btnColumnIdx].Value = "상세보기";

            // 그리드뷰 셀클릭 이벤트 핸들러 설정
            // - 버튼 자체에 이벤트를 설정할 수는 없다.
            // - 왜냐하면 실제로는 버튼이 아니기 때문이다.
            // - 버튼 모양을 하고 있는 셀이다.
            dataGridView1.CellClick += dataGridView1_CellClick;
        }

        int btnColumnIdx;

        void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            // 버튼 클릭 이벤트 설정
            // - 그리드뷰를 클릭했을 때, 버튼 컬럼 인덱스와 같으면 처리를 한다.
            // - 이런식으로 버튼 클릭 이벤트를 흉내낸다.
            if (e.ColumnIndex == btnColumnIdx)
            {
                string id = dataGridView1.Rows[e.RowIndex].Cells["ID"].Value.ToString();
                string name = dataGridView1.Rows[e.RowIndex].Cells["Name"].Value.ToString();

                MessageBox.Show(string.Format("ID : {0}, Name : {1}", id, name));
            }
        }
    }

    class Product
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }