Winform 的dadagridview控件的修改操作
在.NET中,我们一般用datagridview这个控件来获取存储过程执行的返回值以输出显示.针对这种情况而言,通常的做法是在其CLICK事件中添加代码,通过激发此事件,调用数据操作,调用存储过程,执行SQL,修改数据库存储的内容。如果用架构的话就更省事,同时避免了对数据层的频繁操作.
还有一种更简单的办法,datagridview这个控件本来就带有增删改查的功能,先绑定好数据源,注意:一定把主键绑定进去,这个主键也是所谓的那个要删除的行的主键,没问题的就OK了,直接实现删除功能!
在删除操作中的提示确认框
DialogResult result = MessageBox.Show("确定删除?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
switch (result)
{
case DialogResult.OK: MessageBox.Show("你按了确定"); break;
case DialogResult.Cancel: MessageBox.Show("你按了取消"); break;
}
//DialogResult r = MessageBox.Show("真的要删除此行吗?", "提醒", MessageBoxButtons.YesNo);
//if (r.ToString() == "Yes")
// e.Cancel = false;
//else e.Cancel = true;
右键弹出菜单框的两种做法:
1:是使用dataGridView的CellMouseDown事件,判断点击的鼠标是不是右键按钮,不建议这种做法。
private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (e.RowIndex >-1)
{
//弹出操作菜单
contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
}
}
}
2:dataGridView的CellContextMenuStripNeeded事件是专门为我们提供上下文菜单栏的事件,准备好了。
private void dataGridView2_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
{
if (e.RowIndex >-1 )
{
e.ContextMenuStrip = this.contextMenuStrip1;
}
}
为datagridview控件直接增加一行数据,原本我们可以通过datagridview.Rows.Add(row)直接增加一行的,但是,往往我们会给datagridview绑定数据,这时就会报“控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行”这个错,
这时我们可以通过添加DataTable,再绑定datagridview来达到相同的效果。
DataTable dt = (DataTable)datagridview.DataSource;
DataRow dr = dt.NewRow();
dr[1] = "N";
//dt.Rows.Add(dr);
// dt.Rows.InsertAt(dr, currentRowIndex);
dataGridView.DataSource = dt;
void dataGridView2_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.Control) //组合键 ,按下Ctrl建
{