Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据集更新查询如何工作?_C#_Asp.net_Sql_Sql Update - Fatal编程技术网

C# 数据集更新查询如何工作?

C# 数据集更新查询如何工作?,c#,asp.net,sql,sql-update,C#,Asp.net,Sql,Sql Update,我有一个指向SQL数据库中视图的数据集,还有一个使用该数据集填充自身的gridview。 我当然希望这些行是可编辑的,所以我在gridview的标准方法中添加了编辑和删除功能(不是自定义按钮) 正在处理更新查询。。。出于某种原因,它没有自动生成update语句(可能是因为数据集指向的是视图而不是我猜测的表),所以我必须自己创建它。没问题-我选择数据集,选择属性,然后选择UpdateQuery 我的问题是: UPDATE dbo.tblHardware SET TypeID = @TypeID,

我有一个指向SQL数据库中视图的数据集,还有一个使用该数据集填充自身的gridview。 我当然希望这些行是可编辑的,所以我在gridview的标准方法中添加了编辑和删除功能(不是自定义按钮)

正在处理更新查询。。。出于某种原因,它没有自动生成update语句(可能是因为数据集指向的是视图而不是我猜测的表),所以我必须自己创建它。没问题-我选择数据集,选择属性,然后选择UpdateQuery

我的问题是:

UPDATE dbo.tblHardware SET TypeID = @TypeID, Name = @Name, Description = @Description, Cost = @Cost, Weight = @Weight, Image = @Image WHERE (HardwareID = @HardwareID)
参数源设置为“Form”,我列出了每个参数的名称

以下是aspx页面中的相关代码:

        <asp:SqlDataSource ID="dsHardware" runat="server"
        ConnectionString="<%$ ConnectionStrings:RequestFormsConnectionString %>"
        OldValuesParameterFormatString="original_{0}" 
        SelectCommand="SELECT * FROM [vHardware]" 
        UpdateCommand="UPDATE dbo.tblHardware SET TypeID = @TypeID, Name = @Name, Description = @Description, Cost = @Cost, Weight = @Weight, Image = @Image WHERE (HardwareID = @HardwareID)" 
        InsertCommand="INSERT INTO [vHardware] ([HardwareID], [TypeID], [Description], [Name], [Cost], [Weight], [Image], [TypeDesc], [TypeName], [TypeTypeID]) VALUES (@HardwareID, @TypeID, @Description, @Name, @Cost, @Weight, @Image, @TypeDesc, @TypeName, @TypeTypeID)" 
        DeleteCommand="DELETE From tblHardware WHERE HardwareID = @HardwareID">
        <UpdateParameters>
            <asp:FormParameter FormField="TypeID" Name="TypeID" />
            <asp:FormParameter FormField="Name" Name="Name" />
            <asp:FormParameter FormField="Description" Name="Description" />
            <asp:FormParameter FormField="Cost" Name="Cost" />
            <asp:FormParameter FormField="Weight" Name="Weight" />
            <asp:FormParameter FormField="Image" Name="Image" />
            <asp:FormParameter FormField="HardwareID" Name="HardwareID" />
        </UpdateParameters>
        <asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
        AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" DataKeyNames="HardwareID,TypeTypeID"
        DataSourceID="dsHardware">
        <Columns>
            <asp:BoundField DataField="HardwareID" HeaderText="HardwareID" InsertVisible="False"
                ReadOnly="True" SortExpression="HardwareID" />
            <asp:BoundField DataField="TypeID" HeaderText="TypeID" SortExpression="TypeID" />
            <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="Cost" HeaderText="Cost" SortExpression="Cost" />
            <asp:BoundField DataField="Weight" HeaderText="Weight" SortExpression="Weight" />
            <asp:BoundField DataField="Image" HeaderText="Image" SortExpression="Image" />
            <asp:BoundField DataField="TypeDesc" HeaderText="TypeDesc" SortExpression="TypeDesc" />
            <asp:BoundField DataField="TypeName" HeaderText="TypeName" SortExpression="TypeName" />
            <asp:BoundField DataField="TypeTypeID" HeaderText="TypeTypeID" InsertVisible="False"
                ReadOnly="True" SortExpression="TypeTypeID" />
        </Columns>
    </asp:GridView>

那么这一切该怎么办呢?抱歉,我是ASP.NET的新手-以前的经典ASP开发人员

编辑:对不起,我应该说得更清楚些。尝试更新时,我收到错误“
@需要定义硬件”
”。我不知道为什么,因为我觉得这很明确。
另外,我的.cs文件中没有代码-我假设我需要一些东西,但不确定具体是什么。

这里只是一个粗略的猜测,可能是我做错了,但确实有效-尝试将HardwareID参数绑定到gridview

<asp:ControlParameter> should help you out.

<asp:ControlParameter ControlID="GridView1" Name="HardwareID" 

                        PropertyName="SelectedValue" Type="Int32" />
应该能帮到你。
有点

但可能会抱怨其他事情

[编辑]哦,这应该包含在“UpdateParameters”和“DeleteParameters”中


[再次编辑]如果您计划检查数据,则只需要在.cs中使用代码。

上述代码没有关闭asp:SQLDataSource


还是在复制粘贴中被剪掉了?

好吧,我猜一些错误的条目(我不知道它们是做什么的)不知怎么进入了我的代码。 即这一行:

OldValuesParameterFormatString="original_{0}"
…使gridview也使用标准方法。工作起来很有魅力


如果有人在读这篇文章,我如何验证数据?

你可以让问题更清楚一点-wat不起作用,你想知道什么?不,我仍然得到“必须声明变量'@HardwareID'”