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>
'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 |