我正在尝试创建一个页面,该页面允许用户根据通过查询字符串传递的值将记录插入数据库。查询字符串包含一个名为 ProductID 的键,它与我试图插入的 SQL 列匹配。
该 URL 始终类似于: ViewProductDetails.aspx?ProductID=1 我可以确认查询值已设置,因为该页面还使用此提供的产品 ID 加载条目。
正如我所说的那样,不起作用的是将记录插入数据库。我有以下 InsertCommand。
InsertCommand="INSERT INTO [ProductDetails] ([ProductID], [Color], [Size], [Quantity]) VALUES (@ProductID, @Color, @Size, @Quantity)"
我有以下插入参数。
<InsertParameters>
<asp:QueryStringParameter Name="ProductID" QueryStringField="ProductID" Type="Int32" />
<asp:Parameter Name="Color" Type="String" />
<asp:Parameter Name="Size" Type="String" />
<asp:Parameter Name="Quantity" Type="Int32" />
</InsertParameters>
我有以下详细信息视图:
<asp:DetailsView ID="InsertDetailsView" runat="server" DataSourceID="ProductDetailsDataSource" Height="50px" Width="500px" AutoGenerateRows="False" DataKeyNames="ProductDetailID" DefaultMode="Insert" HorizontalAlign="Center" OnItemInserted="InsertDetailsView_ItemInserted">
<CommandRowStyle BackColor="#CCFFCC" ForeColor="#663300" />
<FieldHeaderStyle BackColor="#FFFF99" Font-Bold="True" Font-Names="Times New Roman" Width="100px" Wrap="False" />
<Fields>
<asp:TemplateField HeaderText="Size" SortExpression="Size">
<InsertItemTemplate>
<asp:DropDownList ID="SizeDropDown" runat="server" DataSourceID="ProductSizesDataSource" DataTextField="Size" DataValueField="Size" SelectedValue='<%# Bind("ProductSize") %>' />
</InsertItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Color" HeaderText="Color" SortExpression="Color" />
<asp:BoundField DataField="Quantity" HeaderText="Quantity" SortExpression="Quantity" />
<asp:CommandField ShowCancelButton="False" ShowInsertButton="True" />
</Fields>
<RowStyle BackColor="#FFFFCC" />
</asp:DetailsView>
但是,尝试插入记录会导致。
Cannot insert the value NULL into column 'ProductID', table 'devdb.ProductDetails'; column does not allow nulls. INSERT fails.
我是否可能遗漏了由于某种原因导致查询字段被忽略的内容?