我正在开发一个Windows窗体应用程序。我使用DataGridView和LINQ to SQL的数据绑定。它正在发挥作用。它绑定了整个数据。
我需要一些字段而不是整个表数据,例如:
Customers表包含五个字段(姓名,地址,手机,电子邮件,年龄)。
我使用下面的代码来获取整个数据。
private void AssignLocation_Load(object sender, EventArgs e)
{
// Get Datacontext object to connect with data source
SmartxBillingSystemDataContext dc = new SmartxBillingSystemDataContext();
// create table object
Customer customer = new Customer();
var allcustomers = from c in dc.GetTable<Customer>() select c;
// bind to datagrid
customerBindingSource.DataSource = allcustomers;
// now assign binding source to data grid view
dataGridView1.DataSource = customerBindingSource;
}
现在我只需要一些字段,例如姓名和地址。
此外,我需要在每行中添加一个按钮,如下所示:
| A Name | An Address | Button |
| Another Name | Fake Address | Button |
我怎样才能做到这一点?请帮忙。
对于点击事件,我使用下面的代码
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
popUpLocationWindow();
}
private void popUpLocationWindow()
{
MessageBox.Show("I am clicked");
}
但是这段代码不起作用。
答案 0 :(得分:2)
您可以创建自己的课程:
public class MyCustomer
{
public string Name { get; set; }
public string Address { get; set; }
}
并选择如下:
var allMycustomers = from c in dc.GetTable<Customer>() select new MyCustomer { Name = c.Name, Address = c.Address };
customerBindingSource.DataSource = allMycustomers;
按钮:
DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
btn.HeaderText = "Button";
btn.Text = "Click Me!";
btn.Name = "btn";
dataGridView1.Columns.Add(btn);
btn.UseColumnTextForButtonValue = true;
按钮点击事件的更新,您可以使用 dataGridView1_CellClick 事件..
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 2)
{
MessageBox.Show((e.RowIndex+1) + " Row " + (e.ColumnIndex+1) + " Column button clicked ");
}
}