怎么养通过datagrid选定删除数据库里面的记录? 通过dataview用datagrid显示记录,用dataview过滤后,怎么删除在数据库里面的记录(选定在datagrid里面的记录)?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以直接在dataGrid里增删改记录的string sqlstr="select * from employees";myDa=new SqlDataAdapter(sqlstr,cn);SqlCommandBuilder cb=new SqlCommandBuilder(myDa);ds=new DataSet();myDa.Fill(ds,"record");dataGrid1.SetDataBinding(ds,"record");删除时只需要执行如下语句:if (ds.HasChanges()){ DataSet dsChange=ds.GetChanges(); myDa.Update(dsChange,"record");} 我要选中DataGrid中的一条记录删除ds.HasChanges()应该没反映吧现在是想知道DataGrid中的一条记录怎么和DataSet里的记录一一对应?应该DataView过滤后dataGrid的CurrentRowIndex已经不合Dataset中的Row[]一一对应了 你是要选中一条马上就删了?????要做并不难,DataGrid中有个ItemCommand事件, 你只要在模版列中套入个Button或LinkButton什么的然后再设个CommandName,然后在后台页面中捕获这个事件就行了.然后是删是改就随你了……那要是选错了呢? 很简单,只要让DATASET同步,DG上的那行自动就删了. datagrid.IsSelected(datagrid.CurrentRowIndex)然后你把 表中的主键取出来 执行SQL语句删除 不要直接用dataset或dataview的Update() /// <summary> /// 学生注册处理 /// </summary> private void Register() { DialogResult result; string errmsg = string.Empty; bool b = false; string id; string xq; string zczk; string sql; int count = 0;//记录注册总人数 result = MessageBox.Show("真的要注册吗?", "提示信息", MessageBoxButtons.OKCancel,MessageBoxIcon.Question); if(result != DialogResult.OK) return; //数据检查 if(CheckData() == true) return; //结束当前编辑 this.dataGrid1.BindingContext[dataGrid1.DataSource].EndCurrentEdit(); dataGrid1.BindingContext = new BindingContext(); for(int i = 0; i < table.Rows.Count; i++) { id = table.Rows[i]["ID"].ToString();//学生编号 xq = table.Rows[i]["XQ"].ToString();//学期 if ((bool)(table.Rows[i]["IsSelected"])==true) { zczk = table.Rows[i]["ZCZK"].ToString(); if(zczk == "未注册") { count = count + 1; sql = "Update XSZC set ZCZK = '1' where ID = '"+id+"' and XQ = '"+xq+"' "; try { DbHelper.ExecuteSql(sql); } catch(System.Data.SqlClient.SqlException err) { b = true; errmsg = "注册失败,失败原因:" + err.Message; } } } } if(b == true) { MessageBox.Show(errmsg); } else { if(count>0) { InitDataGrid(); MessageBox.Show("学生注册成功!注册总人数:" +count +"人。"); } else { MessageBox.Show("没有未注册的学生或者未选择未注册的学生。"); } } } 简单的MsSql问题 IListSource 不包含任何数据源。 我是菜鸟问个小问题,轻松得分^^ C#中DLL调用的问题,急求高手帮忙!!! 初学者,该怎么办! 初学者请教问题 metafile的问题,有兴趣的可以探讨一下 无法将文件“obj\Debug\HotelManagers.CheckInForm.resources”复 C# 获取当前声卡的音量 web自定义控件关于datagrid的文体,大虾们帮帮忙,先在这里谢了 winForm界面布局问题 winform中的pictureBox,求助
string sqlstr="select * from employees";
myDa=new SqlDataAdapter(sqlstr,cn);
SqlCommandBuilder cb=new SqlCommandBuilder(myDa);
ds=new DataSet();
myDa.Fill(ds,"record");
dataGrid1.SetDataBinding(ds,"record");删除时只需要执行如下语句:
if (ds.HasChanges())
{
DataSet dsChange=ds.GetChanges();
myDa.Update(dsChange,"record");
}
ds.HasChanges()应该没反映吧
现在是想知道DataGrid中的一条记录怎么和DataSet里的记录一一对应?
应该DataView过滤后dataGrid的CurrentRowIndex已经不合Dataset中的Row[]
一一对应了
然后是删是改就随你了……那要是选错了呢?
然后你把 表中的主键取出来 执行SQL语句删除 不要直接用dataset或dataview的Update()
/// 学生注册处理
/// </summary>
private void Register()
{
DialogResult result;
string errmsg = string.Empty;
bool b = false;
string id;
string xq;
string zczk;
string sql;
int count = 0;//记录注册总人数 result = MessageBox.Show("真的要注册吗?", "提示信息",
MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if(result != DialogResult.OK)
return; //数据检查
if(CheckData() == true)
return; //结束当前编辑
this.dataGrid1.BindingContext[dataGrid1.DataSource].EndCurrentEdit();
dataGrid1.BindingContext = new BindingContext(); for(int i = 0; i < table.Rows.Count; i++)
{
id = table.Rows[i]["ID"].ToString();//学生编号
xq = table.Rows[i]["XQ"].ToString();//学期
if ((bool)(table.Rows[i]["IsSelected"])==true)
{
zczk = table.Rows[i]["ZCZK"].ToString();
if(zczk == "未注册")
{
count = count + 1;
sql = "Update XSZC set ZCZK = '1' where ID = '"+id+"' and XQ = '"+xq+"' ";
try
{
DbHelper.ExecuteSql(sql);
}
catch(System.Data.SqlClient.SqlException err)
{
b = true;
errmsg = "注册失败,失败原因:" + err.Message;
}
}
}
} if(b == true)
{
MessageBox.Show(errmsg);
}
else
{
if(count>0)
{
InitDataGrid();
MessageBox.Show("学生注册成功!注册总人数:" +count +"人。");
}
else
{
MessageBox.Show("没有未注册的学生或者未选择未注册的学生。");
}
} }