The problem I am experiencing is when using the "dropdownlist.selecteditem". Most of the time I get the correct product information for the product selected. But some products consistently return incorrect data - data for another product. The incorrect data is very consistent however; meaning even though I get data for a product different than what is selected I always get the same wrong data for a given product.
Below is the asp code.
<p>
<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
AutoGenerateColumns="False" DataSourceID="ldsDGVProducts" CellPadding="4"
ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="Product ID" ReadOnly="True"
SortExpression="ProductID" />
<asp:BoundField DataField="Price" HeaderText="Price" ReadOnly="True"
SortExpression="Price" DataFormatString="{0:c}" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName"
ReadOnly="True" SortExpression="ProductName" />
<asp:BoundField DataField="Type" HeaderText="Type" ReadOnly="True"
SortExpression="Type" />
</Columns>
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
<asp:LinqDataSource ID="ldsDGVProducts" runat="server"
ContextTypeName="dailybread.DailyBreadDataContext" EntityTypeName=""
Select="new (ProductID, Price, ProductName, Type, Picture)"
TableName="Products" Where="Quantity > @Quantity">
<WhereParameters>
<asp:Parameter DefaultValue="0" Name="Quantity" Type="Int16" />
</WhereParameters>
</asp:LinqDataSource>
</p>
<p>
<span class="style1"><strong>To place an order please fill complete the form below.
</strong></span>
<br />
Customer Name:
<asp:TextBox ID="txtCustomerName" runat="server" Width="207px"></asp:TextBox>
<br />
<br />
<asp:Label ID="lblProduct" runat="server" Text="Product:"></asp:Label>
<asp:DropDownList ID="ddlProducts" runat="server" DataSourceID="ldsDGVProducts"
DataTextField="ProductName" DataValueField="price">
</asp:DropDownList>
<asp:Label ID="lblQuantity" runat="server" Text="Quantity:"></asp:Label>
<asp:TextBox ID="txtQuantity" runat="server" MaxLength="2" Width="24px">0</asp:TextBox>
<asp:Button ID="btnAddItem" runat="server" Text="Add another Item" />
<br />
<asp:Button ID="btnPlaceOrder" runat="server" Text="Place Order"
PostBackUrl="~/Default.aspx" />
<asp:Button ID="btnReset" runat="server" Text="Reset Form" />
<asp:HiddenField ID="counter" runat="server" Value="1" />
<br />
<br />
</p>
</asp:Content>
This is an excerpt of the vb code behind file.
Protected Sub btnPlaceOrder_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnPlaceOrder.Click
' If the customer entered their name assign it to a variable and caluclate the subtotal and total based on their selection
If Not String.IsNullOrEmpty(txtCustomerName.Text.Trim) Then
Customer = txtCustomerName.Text
Call calculatesubtotal()
total = subtotal * 1.0625
Try
Call addorder()
Call OrderDetails()
MsgBox("You order has been received and will be available for pickup in 15 Minutes.", MsgBoxStyle.OkOnly, "Thank You")
Call ResetForm()
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
Else
'Ask the user to enter their name if they have not already done so.
MsgBox("A customer name is required. Please try again", MsgBoxStyle.OkOnly, "What's Your Name?")
txtCustomerName.ReadOnly = False
End If
End Sub
Sub OrderDetails()
Dim list As New ArrayList
Dim list2 As New ArrayList
'add items to the two arrays based on the hidden variable counter.
Select Case counter.Value
Case Is = 1
list.Add(ddlProducts.SelectedItem.ToString)
list2.Add(txtQuantity.Text.Trim)
Case Is = 2
list.Add(ddlProducts.SelectedItem.ToString)
list.Add(ddlProducts0.SelectedItem.ToString)
list2.Add(txtQuantity.Text.Trim)
list2.Add(txtQuantity0.Text.Trim)
Case Is = 3
list.Add(ddlProducts.SelectedItem.ToString)
list.Add(ddlProducts0.SelectedItem.ToString)
list.Add(ddlProducts1.SelectedItem.ToString)
list2.Add(txtQuantity.Text.Trim)
list2.Add(txtQuantity0.Text.Trim)
list2.Add(txtQuantity1.Text.Trim)
Case Is = 4
list.Add(ddlProducts.SelectedItem.ToString)
list.Add(ddlProducts0.SelectedItem.ToString)
list.Add(ddlProducts1.SelectedItem.ToString)
list.Add(ddlProducts2.SelectedItem.ToString)
list2.Add(txtQuantity.Text.Trim)
list2.Add(txtQuantity0.Text.Trim)
list2.Add(txtQuantity1.Text.Trim)
list2.Add(txtQuantity2.Text.Trim)
Case Is = 5
list.Add(ddlProducts.SelectedItem.ToString)
list.Add(ddlProducts0.SelectedItem.ToString)
list.Add(ddlProducts1.SelectedItem.ToString)
list.Add(ddlProducts2.SelectedItem.ToString)
list.Add(ddlProducts3.SelectedItem.ToString)
list2.Add(txtQuantity.Text.Trim)
list2.Add(txtQuantity0.Text.Trim)
list2.Add(txtQuantity1.Text.Trim)
list2.Add(txtQuantity2.Text.Trim)
list2.Add(txtQuantity3.Text.Trim)
Case Is = 6
list.Add(ddlProducts.SelectedItem.ToString)
list.Add(ddlProducts0.SelectedItem.ToString)
list.Add(ddlProducts1.SelectedItem.ToString)
list.Add(ddlProducts2.SelectedItem.ToString)
list.Add(ddlProducts3.SelectedItem.ToString)
list.Add(ddlProducts4.SelectedItem.ToString)
list2.Add(txtQuantity.Text.Trim)
list2.Add(txtQuantity0.Text.Trim)
list2.Add(txtQuantity1.Text.Trim)
list2.Add(txtQuantity2.Text.Trim)
list2.Add(txtQuantity3.Text.Trim)
list2.Add(txtQuantity4.Text.Trim)
Case Is = 7
list.Add(ddlProducts.SelectedItem.ToString)
list.Add(ddlProducts0.SelectedItem.ToString)
list.Add(ddlProducts1.SelectedItem.ToString)
list.Add(ddlProducts2.SelectedItem.ToString)
list.Add(ddlProducts3.SelectedItem.ToString)
list.Add(ddlProducts4.SelectedItem.ToString)
list.Add(ddlProducts5.SelectedItem.ToString)
list2.Add(txtQuantity.Text.Trim)
list2.Add(txtQuantity0.Text.Trim)
list2.Add(txtQuantity1.Text.Trim)
list2.Add(txtQuantity2.Text.Trim)
list2.Add(txtQuantity3.Text.Trim)
list2.Add(txtQuantity4.Text.Trim)
list2.Add(txtQuantity5.Text.Trim)
Case Is = 8
list.Add(ddlProducts.SelectedItem.ToString)
list.Add(ddlProducts0.SelectedItem.ToString)
list.Add(ddlProducts1.SelectedItem.ToString)
list.Add(ddlProducts2.SelectedItem.ToString)
list.Add(ddlProducts3.SelectedItem.ToString)
list.Add(ddlProducts4.SelectedItem.ToString)
list.Add(ddlProducts5.SelectedItem.ToString)
list.Add(ddlProducts6.SelectedItem.ToString)
list2.Add(txtQuantity.Text.Trim)
list2.Add(txtQuantity0.Text.Trim)
list2.Add(txtQuantity1.Text.Trim)
list2.Add(txtQuantity2.Text.Trim)
list2.Add(txtQuantity3.Text.Trim)
list2.Add(txtQuantity4.Text.Trim)
list2.Add(txtQuantity5.Text.Trim)
list2.Add(txtQuantity6.Text.Trim)
Case Is = 9
list.Add(ddlProducts.SelectedItem.ToString)
list.Add(ddlProducts0.SelectedItem.ToString)
list.Add(ddlProducts1.SelectedItem.ToString)
list.Add(ddlProducts2.SelectedItem.ToString)
list.Add(ddlProducts3.SelectedItem.ToString)
list.Add(ddlProducts4.SelectedItem.ToString)
list.Add(ddlProducts5.SelectedItem.ToString)
list.Add(ddlProducts6.SelectedItem.ToString)
list.Add(ddlProducts7.SelectedItem.ToString)
list2.Add(txtQuantity.Text.Trim)
list2.Add(txtQuantity0.Text.Trim)
list2.Add(txtQuantity1.Text.Trim)
list2.Add(txtQuantity2.Text.Trim)
list2.Add(txtQuantity3.Text.Trim)
list2.Add(txtQuantity4.Text.Trim)
list2.Add(txtQuantity5.Text.Trim)
list2.Add(txtQuantity6.Text.Trim)
list2.Add(txtQuantity7.Text.Trim)
Case Is = 10
list.Add(ddlProducts.SelectedItem.ToString)
list.Add(ddlProducts0.SelectedItem.ToString)
list.Add(ddlProducts1.SelectedItem.ToString)
list.Add(ddlProducts2.SelectedItem.ToString)
list.Add(ddlProducts3.SelectedItem.ToString)
list.Add(ddlProducts4.SelectedItem.ToString)
list.Add(ddlProducts5.SelectedItem.ToString)
list.Add(ddlProducts6.SelectedItem.ToString)
list.Add(ddlProducts7.SelectedItem.ToString)
list.Add(ddlProducts8.SelectedItem.ToString)
list2.Add(txtQuantity.Text.Trim)
list2.Add(txtQuantity0.Text.Trim)
list2.Add(txtQuantity1.Text.Trim)
list2.Add(txtQuantity2.Text.Trim)
list2.Add(txtQuantity3.Text.Trim)
list2.Add(txtQuantity4.Text.Trim)
list2.Add(txtQuantity5.Text.Trim)
list2.Add(txtQuantity6.Text.Trim)
list2.Add(txtQuantity7.Text.Trim)
list2.Add(txtQuantity8.Text.Trim)
End Select
Dim connection As String = "Data Source=ITGL6060\WEBBSQL;Initial Catalog=DailyBread;Integrated Security=True"
Dim sql = "select MAX(OrderID) as lastEntry from Orders" 'gets max order Id from Orders
Dim con As New SqlConnection(connection)
con.Open()
Dim cmd As New SqlCommand(sql, con)
Dim reader As SqlDataReader = cmd.ExecuteReader()
While reader.Read()
For i = 0 To list.Count - 1
Dim sql2 = "select ProductID from Products where ProductName = @ProductName" 'gets ProductID
Dim con2 As New SqlConnection(connection)
con2.Open()
Dim cmd2 As New SqlCommand(sql2, con2)
cmd2.Parameters.Add("@ProductName", SqlDbType.VarChar).Value = list.Item(i)
Dim reader2 As SqlDataReader = cmd2.ExecuteReader()
While reader2.Read()
If list2.Item(i) > 0 Then
Dim sql3 = "insert into OrderDetails (OrderID, ProductID, Quantity) values (@OrderID, @ProductID, @Quantity)" ' inserts data into order details
Dim con3 As New SqlConnection(connection)
con3.Open()
Dim cmd3 As New SqlCommand(sql3, con3)
cmd3.Parameters.Add("@OrderID", SqlDbType.Int).Value = CInt(reader("lastEntry"))
cmd3.Parameters.Add("@ProductID", SqlDbType.Int).Value = CInt(reader2("ProductID"))
cmd3.Parameters.Add("@Quantity", SqlDbType.Int).Value = CInt(list2.Item(i))
cmd3.ExecuteNonQuery()
cmd3.Dispose()
con3.Close()
End If
End While
reader2.Close()
cmd2.Dispose()
con2.Close()
Next
End While
reader.Close()
cmd.Dispose()
con.Close()
End Sub
Any thoughts or suggestions would be greatly appreciated.

New Topic/Question
Reply




MultiQuote





|