我用VB.Net开发。我正在尝试建立一个购物车。在这里,我尝试将转发器购物车项目插入购物历史记录表
这是我得到的错误。
对象引用未设置为对象的实例。
来源错误:
第182行:Dim命令As New SqlCommand(queryString,connection)
第183行:
第184行:command.Parameters.AddWithValue(" @ Prod_Info_id",CType(item.FindControl(" Prod_Info_id"),Label).Text)
这是标记
<asp:Repeater ID="ShoppingCartrepeater" runat="server">
<HeaderTemplate>
<table class="shopping-table">
<tr>
<th colspan="2">Product Image and Name</th>
<th>SKU</th>
<th>Cost</th>
<th>Quantity</th>
<%--<th>Service Charge</th>--%>
<th>Discount</th>
<th>Total</th>
<th></th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="image-column"><a href="#"> <asp:Image ID="Image1" runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Prod_Image_Front")%>'/></a>
</td>
<td><p><a href="#"><asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Product")%>' ></asp:Label></a></p></td>
<td><p><asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Prod_Info_id")%>'></asp:Label></p></td>
<td><p>₦<asp:Label ID="PCost" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Cost")%>' /></p></td>
<td>
<p> <asp:Label ID="Label3" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Qty")%>'></asp:Label> </p>
<%--<asp:TextBox ID="txtQTY" runat="server" type="text" value="1"></asp:TextBox>--%>
<%--<input type="text" value="1">--%>
</td>
<%--<td><p><asp:Label ID="lblTax" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Service_Charge")%>'></asp:Label></p></td>--%>
<td><p><asp:Label ID="lblDiscount" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Discount")%>'></asp:Label></p></td>
<td><p>₦<asp:Label ID="lblTotal" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Total")%>'></asp:Label></p></td>
<td>
<p>
<a href='ShoppingCart.aspx?action=remove&id=<%# DataBinder.Eval(Container.DataItem, "Prod_Info_id") %>'><i class="icons icon-ok-3"></i> Delete</a><br>
<asp:Label ID="Label4" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Cust_Size")%>' Visible="False"></asp:Label>
<%--<a href="#" class="red-hover"><i class="icons icon-cancel-3"></i> Delete</a>--%>
</p>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
这是我背后的代码
Sub CreateOrderHistory()
Dim Prod_Info_id As Label
Dim Qty As Label
Dim Total As Label
Dim Cost As Label
Dim Cust_Size As Label
Dim connectionString As [String] = ConfigurationManager.ConnectionStrings("BG").ConnectionString
Dim queryString As [String] = ""
Using connection As New SqlConnection(connectionString)
For Each item As RepeaterItem In ShoppingCartrepeater.Items
Prod_Info_id = CType(item.FindControl("Prod_Info_id"), Label)
Qty = CType(item.FindControl("Cost"), Label)
Total = CType(item.FindControl("Qty"), Label)
Cost = CType(item.FindControl("Total"), Label)
Cust_Size = CType(item.FindControl("Cust_Size"), Label)
queryString = "INSERT INTO BGOrderHIstory (Prod_Info_id,Shoper_id,BGOrder_id,OrderStatus,OrderDate,Total,Cost,Cust_Size) VALUES (@Prod_Info_id,@Shoper_id,@BGOrder_id,@OrderStatus,@OrderDate,@Total,@Cost,@Cust_Size)"
Dim command As New SqlCommand(queryString, connection)
command.Parameters.AddWithValue("@Prod_Info_id", CType(item.FindControl("Prod_Info_id"), Label).Text)
command.Parameters.AddWithValue("@Cost", CType(item.FindControl("Cost"), Label).Text)
command.Parameters.AddWithValue("@Shoper_id", Shoperid)
command.Parameters.AddWithValue("@BGOrder_id", Ihenchoro)
command.Parameters.AddWithValue("@OrderStatus", 0)
command.Parameters.AddWithValue("@OrderDate", Format(Now(), "yyyy-MM-dd HH:mm"))
'.InsertParameters.Add("Special_Request", txtSpecial.Text)
command.Parameters.AddWithValue("@Total", CType(item.FindControl("Total"), Label).Text)
'.InsertParameters.Add("GTotal", FinlTotal)
'.InsertParameters.Add("Service_Charge", 500)
'.InsertParameters.Add("Last_update", Date.UtcNow.ToString)
command.Parameters.AddWithValue("@Cust_Size", CType(item.FindControl("Cust_Size"), Label).Text)
command.ExecuteNonQuery()
Next
End Using
End Sub
答案 0 :(得分:0)
由于这个问题在这里被问了很多次,所以当时所有的问题都是here。
好的,既然你提到你在这里收到错误
command.Parameters.AddWithValue("@Prod_Info_id", CType(item.FindControl("Prod_Info_id"), Label).Text)
因此,我认为您在该项目中没有标识为Prod_Info_id
的标签。
将调试器放在那里并进行调试以找到答案。
或者你可以发布标记,以便我们检查。