【问题标题】:Updating/Inserting is not supported by data source数据源不支持更新/插入
【发布时间】:2011-02-11 15:07:42
【问题描述】:

我一直在制作我的第一个 ASP.NET Visual Studio 网站,我刚刚开始使用数据库,我已经制作了一个表格和一个后台页面来控制表格的内容。

此页面遵循以下规则:

-> 我已经添加了 SQLDataSource 并进行了配置。

-> 我添加了一个网格视图来查看我的内容并将其配置到我的 SQLDataSource,这里我添加了编辑/删除选项。

-> 我添加了一个 DetailsView 配置到我的 SWLDataSource,这里我添加了新选项(在我的表中创建新条目)

我的数据库将 id 列设置为主键(数据类型=int;允许空值=未选中)

每次我尝试通过此后台页面更新我的数据库时,都会收到以下错误:

数据不支持更新 源 'SqlDataSource1' 除非 指定了 UpdateCommand。 描述:未处理的异常 在执行过程中发生 当前的网络请求。请查看 堆栈跟踪以获取有关的更多信息 错误及其起源 代码。

异常详情: System.NotSupportedException:更新 数据源不支持 'SqlDataSource1' 除非 UpdateCommand 已指定。

来源错误:

产生了一个未处理的异常 在当前执行期间 网络请求。有关的信息 异常的起源和位置 可以使用异常识别 下面的堆栈跟踪。

堆栈跟踪:

[NotSupportedException: 更新是 数据源不支持 'SqlDataSource1' 除非 UpdateCommand 已指定。]
System.Web.UI.WebControls.SqlDataSourceView.ExecuteUpdate(IDictionary 键,IDictionary 值,IDictionary 旧值)+1644420
System.Web.UI.DataSourceView.Update(IDictionary 键,IDictionary 值,IDictionary 旧值, 数据源视图操作回调 回调)+92
System.Web.UI.WebControls.GridView.HandleUpdate(GridViewRow 行,Int32 行索引,布尔值 原因验证)+907
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean CausesValidation, String 验证组)+704
System.Web.UI.WebControls.GridView.OnBubbleEvent(对象 来源,EventArgs e) +95
System.Web.UI.Control.RaiseBubbleEvent(对象 来源,EventArgs 参数)+37
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(对象 来源,EventArgs e) +123
System.Web.UI.Control.RaiseBubbleEvent(对象 来源,EventArgs 参数)+37
System.Web.UI.WebControls.LinkBut​​ton.OnCommand(CommandEventArgs e) +118
System.Web.UI.WebControls.LinkBut​​ton.RaisePostBackEvent(字符串 事件参数)+135
System.Web.UI.WebControls.LinkBut​​ton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler 源控件,字符串事件参数) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint) +1565

我真的可以在这里使用一些帮助!

【问题讨论】:

    标签: sql database visual-studio visual-studio-2010


    【解决方案1】:

    错误消息说明了一切:“除非指定了 UpdateCommand,否则数据源 'SqlDataSource1' 不支持更新。”。您必须将 sql 代码或存储过程的名称分配给属性 UpdateCommand,以便 SqlDataSource 知道如何处理您的更新。

    【讨论】:

    • 没问题。毕竟,我们是来帮忙的。按照我在帖子中放置的链接(在“UpdateCommand”一词下):msdn.microsoft.com/en-us/library/…。滚动到“示例”。您可以将 UpdateCommand 属性的 sql 代码放置在 html 页面本身(如示例中)或代码隐藏中。
    • 有一件事,一位朋友刚刚提到我,如果我在我的网格视图选项上选中“启用编辑”,这一切都应该工作,但我没有那个选项,只启用分页/排序/选择...这是为什么呢?
    • 我认为你的朋友是这个意思:msdn.microsoft.com/en-us/library/czzytf25(v=vs.80).aspx。但是,该选项启用了用于编辑的默认界面(即按钮、文本框等),但在 sql 中更新数据的实际代码仍必须分配给 updatecommand 属性。该链接明确提到,只要您不这样做,您的网格视图上就不会出现“启用编辑”复选框。
    • 在您的帮助下,我设法修复了所有命令,但删除命令除外。这就是我所做的: DeleteCommand="DELETE FROM [portfolioprint1] WHERE [id] = @id" ,我收到以下错误:必须声明标量变量“@id”。 (id 是我的主键,它会自动递增),其他一切正常!
    • 您是否在 gridview 的 datakeynames 字段中添加了“Id”?如果没有,删除将无法进行。
    猜你喜欢
    • 2017-07-05
    • 2019-08-26
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多