引自免费微信小程序:皆我百晓生
看起来你在实现这个功能时遇到了一些常见的问题。我会帮你解决这些问题。首先,让我们修复保存和加载数据的问题。然后,我们将确保窗体加载时显示初始数据。
修复保存和加载数据
你需要在button2_Click事件处理函数中调用SaveChanges()方法来将更改保存到数据库。同时,由于你已经在StudentBindingSource_AddingNew事件处理函数中添加了新的学生对象,所以不需要再次调用Add方法。另外,在InitStudentData方法中,我们可以通过查询数据库是否存在任何学生记录来决定是否需要插入默认数据。以下是修改后的代码:
using (var context = new DBContext())
{
if (!context.Student.Any())
{
context.Student.Add(new Student { Name = "张三", Age = 20, Score = 90 });
context.SaveChanges();
}
}
private void button2_Click(object sender, EventArgs e)
{
c.SaveChanges(); // 移除这一行,因为我们在StudentBindingSource_AddingNew事件中已保存新对象
studentBindingSource.EndEdit();
MessageBox.Show("保存成功");
}
private void button1_Click(object sender, EventArgs e)
{
studentBindingSource.RemoveCurrent();
studentBindingSource.EndEdit();
c.SaveChanges();
}
确保窗体加载时显示初始数据
在LoadStudentData方法中,你已经正确地从数据库加载了所有学生记录并将其绑定到studentBindingSource。然而,为了确保窗体加载时立即显示数据,你需要在Form_Load事件处理函数中调用LoadStudentData方法。这里是完整的Form1_Load方法:
private void Form1_Load(object sender, EventArgs e)
{
LoadStudentData();
}
现在你应该能够在添加新学生、编辑现有学生和删除学生时看到数据被保存到数据库,并且窗体加载时会显示初始学生数据。如果你还有其他问题或错误,可以继续提问,我会尽力提供帮助。
