1

我正在尝试创建一个页面,该页面允许用户根据通过查询字符串传递的值将记录插入数据库。查询字符串包含一个名为 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.

我是否可能遗漏了由于某种原因导致查询字段被忽略的内容?

4

0 回答 0