如果问题解决了,我再加上100分。问题有点长,请耐心看完函数:
dataDel() :删除dataGridView1中选中行对应的数据库中记录,仅仅执行一条sql语句
dataRefresh()
{
DataTable dt;
string sql = "select dealdate,myvalue,id from mymoney";
dt = db.queryDataTable(sql);//仅仅执行一条sql语句 dataGridView1.Columns["c1"].DataPropertyName = "dealdate"; //三个列是在form_load中用dataGridView1.Columns.Add设置的
dataGridView1.Columns["c2"].DataPropertyName = "myvalue";
dataGridView1.Columns["id"].DataPropertyName = "id";
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = dt;
dataGridView1.Columns["id"].Visible = false;
}
button_click(...)
{
dataDel();
dataRefresh();
}
现在的问题是:点一次button,dataGridView1的显示没有改变,被删除的那条记录任然存在
再点击一次这个按钮,dataGridView1才显示正常我想问问为什么,是dataRefresh()函数写的有问题吗?
dataDel() :删除dataGridView1中选中行对应的数据库中记录,仅仅执行一条sql语句
dataRefresh()
{
DataTable dt;
string sql = "select dealdate,myvalue,id from mymoney";
dt = db.queryDataTable(sql);//仅仅执行一条sql语句 dataGridView1.Columns["c1"].DataPropertyName = "dealdate"; //三个列是在form_load中用dataGridView1.Columns.Add设置的
dataGridView1.Columns["c2"].DataPropertyName = "myvalue";
dataGridView1.Columns["id"].DataPropertyName = "id";
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = dt;
dataGridView1.Columns["id"].Visible = false;
}
button_click(...)
{
dataDel();
dataRefresh();
}
现在的问题是:点一次button,dataGridView1的显示没有改变,被删除的那条记录任然存在
再点击一次这个按钮,dataGridView1才显示正常我想问问为什么,是dataRefresh()函数写的有问题吗?
解决方案 »
- 一个值得关注的问题
- 线程A创建个Timer ,线程B设置Enabled为true,有用吗?
- 关闭弹出的层页面后,页面上的txtbox 不能用事怎么回事?
- winform中,一个datagrid 绑定了父子表,当更新子表的记录后,datagrid里数据居然不变?
- 急求高斯消元法的C#代码,急急!!!
- 串口名称的问题,请高手指教,谢谢
- 求一个网站的源码!送上200分!
- 新年遇到不会的问题,郁闷,大家救命啊~~~
- 耳前即将响起南京的防空警报,让我们为30万同胞的亡灵默哀
- provider: SQL 网络接口, error: 25 - 连接字符串无效
- DataGridView的columnheader
- C# .net 中存储过程 出参的调用
发下dataDel()的代码
dataDel()//只有一条sql语句的执行,而且我能保证是执行成功了
{
int idValue = (int)dataGridView1.CurrentRow.Cells["id"].Value;//我用datagridview1的一列保存id,设置id列为隐藏
string sql = "delete from mymoney where id=" + idValue;
bool b = db.sqlExecute(sql);
}回1楼:加载数据的语句给datarefresh完全一样。datarefresh只是重新读取一下数据而已。
//你最开始DataGridView中的数据是怎么加载进来的?
回3楼:我确定一地次点击的时候dataDel成功执行了,因为我在切换一下页面之后,也能正常的显示。
//dataDel应该也没问题,问题应该在他最开始加载到dataGridView的方法中,导致他第一次执行butom的时候,dataDel执行无效,而专做了Refresh操作,使DataGridView再次正确的赋上了DataSource,第二次才正确执行。很郁闷,谢谢大家的回答。
不行再dataGridView1.Columns.Clear(),再重复form_Load中的add操作.
再重复refresh中的操作, 没有道理不会变.不过,你没有充分利用DGV的特性,还是有编网页的惯性思维.像这种请况完全可以用dataGridView1.Rows.Remove()操作直接删除那一行.
执行效率和显示效果都比重新绑定强得多.
如果我在dataDel中加入MessageBox.show("");,点击一次就可以了
谁帮我想个解决办法啊?
//那你就在这个方法里面写个设置焦点的语句试试,比如你界面上还有其他控件,写在butom方法最开始处:this.你的控件名.Focus();
谢谢你的思路,我试了不行的
delRowForZhichuShouru();
this.button1.Focus();
this.dataGridView1.Focus();
dataRefresh();//to:Qzh7523 ,谢谢你的提醒,虽然数字和串之间的运算会自动转换,但是我们该有个好的习惯。
string sql = "delete from mymoney where id=" + idValue.ToString();