我创建了一个记录视图表单,其中包含一些通过 BindingSource 和 BindingNavigator 绑定的元素。数据字段的查看操作正常。请注意,变量 da 和 ds 在这种形式下是全局的。
private void frmItem_Load(object sender, EventArgs e) {
string scon = System.Configuration.ConfigurationManager.ConnectionStrings["myitems"].ToString();
da = new SqlDataAdapter("Select * From myitems where id > 0 ", scon);
ds = new DataSet();
da.Fill(ds);
bindingSource1.DataSource = ds.Tables[0];
bindingNavigator1.BindingSource = this.bindingSource1;
this.txtId.DataBindings.Add(new Binding("Text", bindingSource1, "id", true));
this.txtItem.DataBindings.Add(new Binding("Text", bindingSource1, "item", true));
this.txtUpdatedwhen.DataBindings.Add(new Binding("Text", bindingSource1, "updatedwhen", true));
}
我使用行标题鼠标 dbl-click 事件从项目的数据网格视图中显示此记录视图表单。来自 dgv 的请求行被正确选择,其行数据正确显示在记录视图表单中。
private void dgvItems_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) {
frmItem gfrmItem = new frmItem();
string sID = this.dgvItems.CurrentRow.Cells[0].Value.ToString();
gfrmItem.FilterByID(sID);
gfrmItem.Show();
}
我在导航器中添加了一个保存按钮,以便我可以保存单个记录。我正在尝试做的是在通过按钮单击保存记录之前以编程方式应用日期/时间戳更新。
private void btnSave_Click(object sender, EventArgs e)
{
this.txtUpdatedwhen.Text = DateTime.Now.ToString();
da.Update(ds);
}
尽管日期/时间值根据代码更改并显示在表单中,但更新并未应用日期/时间更改。
我认为文本框值已绑定到基础数据集,并且会接受更改,就像我手动输入它一样......但这并没有发生。我读过其他一些帖子,使用数据适配器更新是解决此问题的正确方法,而不是执行直接 sql 更新之类的操作。
我很困惑如何解决这个问题。任何指针将不胜感激。