728x90

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

        private void Form1_Load(object sender, EventArgs e)
        {
            // 데이터 소스 생성
            List<product> productList = new List<product>() {
                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; }
    }
</product></product>

 

출처 : http://denisoh.tistory.com/13

728x90

'C#' 카테고리의 다른 글

읽기 전용 필드에 바인딩된 datagridview  (0) 2014.06.29
c# datagridview change current selected row  (0) 2014.06.28
c# numericupdown valuechanged 문제  (0) 2014.06.28
c# datagridview selectedrows  (0) 2014.06.28
c# string format  (0) 2014.06.27

+ Recent posts