我有一个指向我的 SQL 数据库中的视图的数据集,以及一个使用该数据集填充自身的网格视图。我当然希望行可编辑,所以我在 gridview 中添加了编辑和删除功能 - 标准方法(不是自定义按钮)
现在使用更新查询......由于某种原因,它没有自动生成更新语句(可能导致数据集指向视图而不是我猜的表)所以我必须自己创建它。没问题 - 我选择数据集,选择属性,然后选择 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 开发人员。
编辑: 对不起,我应该更清楚。尝试更新时,我收到错误“ @Hardware needs to be defined
”。不知道为什么,因为它对我来说看起来很明确。此外,我的 .cs 文件中没有代码 - 我假设我需要一些东西,但不确定到底是什么。