使用2 DialogForm删除数据
嗨我有问题从2表格对话框中删除数据
在第一个dialogform中它包含数据列表,在第二个dialogform中它包含数据的详细信息和删除按钮…我已经成功删除了数据库中的数据,但我很困惑如何从列表中删除数据…
如果只是选择数据并删除,我知道可以使用此代码完成
quizzes.RemoveAt(listBoxQuizzes.SelectedIndex);
但是这里的dialogform1问题不可用按钮删除,只是查看详细信息数据。 所以如果用户想删除数据,他必须打开dialogform2(详细数据)我已经用这段代码删除了数据库中的数据
Global.deleteData("DELETE FROM Quiz_Occurrences WHERE ID = " + id);
并关闭detaildataform(dialogform2)
this.Close();
并转到dialogform1(listdatabox)这里的问题,我刚刚删除的数据因为它还没有删除(已经从数据库删除但没有从列表中删除) 。 并需要重新启动程序以查看删除数据的效果
更新进度
我将数据更改为全局变量,因此技术上我可以删除dialogform2中的数据
这是代码(dialogform1中的修饰符列表框)
int no = 1; foreach (CQuizOccurrence myQuizOccurrence in Global.quizOccurrences) { }
如果我想从dialogform1中删除它,我可以使用
Global.quizOccurrences.removeAT(listBoxQuizzes.SelectedIndex);
但如果我想从dialogform2中删除它
Global.quizOccurrences.removeAT(.........); //still not have idea how can i reference index
从@nitin 更新解决方案
所以首先我写在formdialog2
public Frmdialog1 frm_dialog { get; set; }
然后我在formdialog1中写这个
frmdialog2.frm_dialog=this;
然后再回到formdialog1来写
frm_dialog.quizzes.RemoveAt(frm_dialog.listBoxQuizzes.SelectedIndex);
是的,因为我得到了很多错误
如果你从第一个开始第二个对话框你可以拥有Frmdialog2
属性
public Frmdialog1 frm_dialog { get; set; }
在Frmdialog2
中创建Frmdialog2
对象后,您可以将此属性设置为
frmdialog2.frm_dialog=this;
现在你可以在删除数据库中的记录之后从Frmdialog2
iteself中的这个列表框中删除项目
frm_dialog.quizzes.RemoveAt(frm_dialog.listBoxQuizzes.SelectedIndex);
注意: listbox
修饰符应该是public
在找到关于这个主题的许多不同问题之后,我终于能够按照自己的意愿去做
首先我尝试将var更改为全局,所以我可以从dialogform2中删除listbox dialogform1中的数据(我认为这是最简单的方法)
//in dialog form1 foreach (CQuizOccurrence myQuizOccurrence in Global.quizOccurrences) { //load data from Global.quizOccurences } //call function close to close dialogform1
然后在dialogform2中,将Global.quizOccurrences数据与日期和时间明细数据相匹配(使用list&foreach)
List matchData = new List (); foreach (CQuizOccurrence myQuizOccurrence in Global.quizOccurrences) { DateTime dtDatabase = (DateTime)myQuizOccurrence.occurred; string dt = dtDatabase.ToString(); if (dt == dateOccur) { matchData.Add(myQuizOccurrence); } } foreach (CQuizOccurrence myQuizOccurrence in matchData) { Global.quizOccurrences.Remove(myQuizOccurrence); } //call function show dialog for formdialog1
form1可以接受form2的close事件。
在form1中
form2 f2dialog = new form2(/*I guess you are passing data here*/); f2.dialog.Closing += eventhandler;
别的地方
void eventhandler(object sender, eventargs e) { //refresh globaldata since by now you have ran delete query //rebind or call listbox.items.refresh() or both <-------------this how do you get data from rver? the server is updated but does global know that? }
然后你需要调用代码再次从数据库中获取数据。 并重新绑定到数据
listbox.datacontext = Global.GetData();//or however this is done
您必须手动重置此更改数据库的eveerytime
数据绑定并不像你想象的那么聪明。
上述就是C#学习教程:使用2 DialogForm删除数据分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1002592.html