直接在datagridview上修改后,比如我改了一个单元格的值,SubmitChanges()保存后,没有任何反应,回头再看,还是没有保存上? 这是怎么回事?该如何修改啊? 请指教
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _18
{
public partial class Form1 : Form
{
booksDataClassesDataContext bookstore = new booksDataClassesDataContext();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.book_infoDataGridView.DataSource = bookstore.book_info;
BindingSource bds=new BindingSource();
bds.DataSource = this.bookstore.book_info;
this.book_infoBindingSource = bds;
this.book_infobindingNavigator.BindingSource = bds;
}
private void save_Click(object sender, EventArgs e)
{
this.book_infoBindingSource.EndEdit();
bookstore.SubmitChanges();
}
}
}
光光调用下SubmitChanges方法就可以了啊?虽然我没用过这个方法,不过我想,既然你是要保存DataGridView中的数据,那么你的SubmitChanges方法或者bookstore对象总要知道你要保存什么东西的数据吧。从你提供的这些代码看来,你没有让SubmitChanges方法或者bookstore对象知道,你要保存的是DataGridView中的数据
首先获取修改的数据,然后在数据源中查询到修改前的数据,并修改成修改后的数据内容;最后再调用修改命令修改并保存到数据库,然后重新查询,刷新界面;
#region gridView1_CellValueChanged private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { var id = Kit.ToInt32(gridView1.GetDataRow(e.RowHandle)["ID"]); if (id != 0 && role.Equals(Role.PurchaseOrderOperator)) { var shipmentItem = recShipmentItem.SingleOrDefault(o => o.ID == id); if (e.Column.Name == "PRINT_NUM_IN") { if (!Validation.IsNumeric(e.Value.ToString())) { DialogHelper.ShowErrorMessage("打印数量必须为整数"); return; } else { shipmentItem.PRINT_NUM_IN = Kit.ToDecimal(e.Value); } }
我这个用的是 devexpress的 gridcontrol控件,跟gridview差不多; 这个是获取修改的数据,并修改数据源;
update数据源 自己应该回写吧,写完再submitchanges