我正在使用FormView更新现有的SQL Server记录。and数据源中的行在FormView中显示得很好,我可以编辑它们。当我单击更新时,我得到的是ItemUpdating事件,而不是ItemUpdated事件,并且修订不会写入数据库。
有人能在这方面帮我一下吗?
发布于 2008-10-22 23:45:20
在ItemUpdating事件处理程序中,请确保以下内容:
-If您没有使用开放式并发检查,请删除FormView可能放置在OldValues集合中的任何旧值。
-Make确保存储过程、查询或数据源所需的所有参数都有值,并且在Keys或NewValues集合中命名正确(并确保不存在重复项)。
在某些情况下(通常涉及ObjectDataSource时),我必须覆盖由FormView控件设置的值,方法如下:
protected void myFormView_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
// remove the old values
e.Keys.Clear();
e.OldValues.Clear();
e.NewValues.Clear();
// set the parameter for the key
e.Keys.Add("@key", valueGoesHere);
// set other parameters
e.NewValues.Add("@param1", aValue);
e.NewValues.Add("@param2", anotherValue);
}
它并不美观,但它让您可以绝对控制传递给DataSource的内容。通常,如果您的FormView中的控件都是使用Bind()进行双向数据绑定(而不是Eval)绑定的,那么您不应该这样做,但至少您可以在ItemUpdating中放置一个断点,并打开e.Keys、e.OldValues和e.NewValues集合来查看内容是否为您所期望的内容。
下一步是启动SQL Server事件探查器以运行跟踪并检查正在执行的实际查询。
发布于 2008-10-09 13:49:00
如果去掉ItemUpdating事件和ItemUpdated事件,那么您的SQL语句执行时是否没有错误?
发布于 2008-10-09 13:49:43
我们可以看看sqldatasource是什么样子的吗?您是否记得将sqldatasource中的所有参数放在插入和更新参数列表下?
哦,您是否在itemupdating事件中设置了cancel属性?
https://stackoverflow.com/questions/187305
复制相似问题