Uppdateringen fungerar inte och jag får inga felmeddelande, Problemet är att något med "txtQuantity" Jag får värdet som finns i den från början. Den läser alltså inte värdet när jag har ändrat. Jag tror det måste vara nåt med DataBind() men kan inte hitta felet och jag vet inte om det är det som är fel heller. Nej, det gör jag inte. Men en kompis till mej provade detta när jag lagt ut det och det fungerar när man skriver in noll, då ska det radera och det gör det. Detta tyder ju på att det är nåt i SP som inte stämmer. Jag lägger ut SP när jag kommer hem. Hm.. Om du inte använder Viewstate så skulle jag annars tippa på att det var anledningen; som det är nu så skapas ju inte raderna förrens _efter_ att uppdateringskoden har exekverats. Vilket skulle betyda att ingenting uppdateras. Fast det förklarar dock inte att du lyckas radera rader? Å andra sidan, att du lyckas radera rader, utan att använda viewstate känns dock mystiskt.. Någon är det som inte stämmer skulle jag vilja påstå Nåt är det som du säger som inte stämmer. Har gått igenom SP utan att hitta vad som är galet. Skickar upp den om nån annan kan hitta vad som är fel. Skriver jag in noll eller mindre så fungerar SP. Har upptäckt vad som är fel, men kan inte hitta var det är. När jagsätter de tre textboxarna till Visible = Treu så fungerar det. Kan man inte hadom hidden? Det var j''''t märkligt tycker jag.Uppdateringen fungerar inte
<code>
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
populateControls();
}
private void populateControls()
{
this.Title = ConfigurationManager.AppSettings["SiteName"] + " - Din varukorg";
DataTable dt = CartAccess.GetCartItems();
if (dt.Rows.Count == 0)
{
grdCart.Visible = false;
lblCartTotAmount.Visible = false;
lblStatus.ForeColor = System.Drawing.Color.Red;
lblStatus.Text = "Din varukorg är tom";
lblCartInfo.Visible = false;
}
else
{
grdCart.DataSource = dt;
grdCart.DataBind();
lblStatus.ForeColor = System.Drawing.Color.Green;
lblStatus.Text = "Dessa varor finns i din varukorg";
decimal amount = CartAccess.GetCartTotalAmount();
lblCartTotAmount.Text = String.Format("{0:c}", amount);
}
}
protected void btnUpdateCart_Click(object sender, EventArgs e)
{
int rowsCount = grdCart.Rows.Count;
GridViewRow row;
TextBox txtQuantity;
TextBox txtColorID;
TextBox txtSizeID;
TextBox txtClothesID;
int colorID;
int sizeID;
int clothesID;
int prodID;
int quantity;
bool success = true;
for (int i = 0; i < rowsCount; i++)
{
row = grdCart.Rows[i];
prodID = Int32.Parse(grdCart.DataKeys[i].Value.ToString());
txtQuantity = (TextBox)row.FindControl("txtQuantity");
txtClothesID = (TextBox)row.FindControl("txtClothesID");
txtColorID = (TextBox)row.FindControl("txtColorID");
txtSizeID = (TextBox)row.FindControl("txtSizeID");
if (Int32.TryParse(txtClothesID.Text, out clothesID))
clothesID = int.Parse(txtClothesID.Text);
else
clothesID = 0;
if (Int32.TryParse(txtColorID.Text, out colorID))
colorID = int.Parse(txtColorID.Text);
else
colorID = 0;
if (Int32.TryParse(txtSizeID.Text, out sizeID))
sizeID = int.Parse(txtSizeID.Text);
else
sizeID = 0;
if (Int32.TryParse(txtQuantity.Text, out quantity))
quantity = int.Parse(txtQuantity.Text);
lblStatus.Text += "<br />ProdID: " + prodID.ToString();
lblStatus.Text += "<br />Quant: " + quantity.ToString();
success = CartAccess.UpdateCart(prodID, quantity, colorID, sizeID, clothesID);
lblStatus.Text += success ? "Good" : "Fail";
}
populateControls();
}
.aspx
<asp:GridView ID="grdCart" runat="server" DataKeyNames="productID"
AutoGenerateColumns="False" GridLines="Horizontal">
<HeaderStyle BackColor="#c3bc02" />
<AlternatingRowStyle BackColor="#f7f5cd" />
<Columns>
<asp:TemplateField Visible="False">
<ItemTemplate>
<asp:TextBox ID="txtClothesID" runat="server" Text='<%#Eval("clothesID") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField Visible="False">
<ItemTemplate>
<asp:TextBox ID="txtColorID" runat="server" Text='<%#Eval("colorID") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField Visible="False">
<ItemTemplate>
<asp:TextBox ID="txtSizeID" runat="server" Text='<%#Eval("sizeID") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="productName" HeaderText="Produkt" ReadOnly="True" >
<ItemStyle CssClass="regText" Width="150px" />
</asp:BoundField>
<asp:TemplateField HeaderText="Antal">
<ItemTemplate>
<asp:TextBox ID="txtQuantity" runat="server" Text='<%#Eval("quantity") %>' Width="20" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Top" Width="30px" />
</asp:TemplateField>
<asp:BoundField DataFormatString="{0:c}" DataField="price" HeaderText="Pris"
ReadOnly="True" >
<ItemStyle CssClass="regText" HorizontalAlign="Right" VerticalAlign="Top"
Width="100px" />
</asp:BoundField>
<asp:BoundField DataField="color" HeaderText="Färg">
<ItemStyle CssClass="regText" HorizontalAlign="Center" VerticalAlign="Top"
Width="70px" />
</asp:BoundField>
<asp:BoundField DataField="size" HeaderText="Storlek">
<ItemStyle CssClass="regText" HorizontalAlign="Center" VerticalAlign="Top"
Width="50px" />
</asp:BoundField>
<asp:BoundField DataField="clothes" HeaderText="Plagg">
<ItemStyle CssClass="regText" HorizontalAlign="Center" VerticalAlign="Top"
Width="70px" />
</asp:BoundField>
<asp:BoundField DataField="subTot" DataFormatString="{0:c}"
HeaderText="Sub.Total">
<ItemStyle CssClass="regText" HorizontalAlign="Right" VerticalAlign="Top"
Width="100px" />
</asp:BoundField>
</Columns>
</asp:GridView>
<table style="width:530px; padding:3px; margin-top:5px;">
<tr>
<td style="text-align:right; width:85%" class="boldText">TOTALT: </td>
<td style="width:15%; text-align:right;">
<asp:Label ID="lblCartTotAmount" runat="server" CssClass="yellowBorder boldText" BackColor="#c3bc02" />
</td>
</tr>
<tr>
<td colspan="2" style="text-align:right;">
<asp:Button ID="btnUpdateCart" runat="server" Text="Uppdatera korgen"
onclick="btnUpdateCart_Click" />
<asp:Button ID="btnToCashier" runat="server" Text="Till kassan" />
</td>
</tr>
</table>
</code>Sv:Uppdateringen fungerar inte
Sv: Uppdateringen fungerar inte
Sv:Uppdateringen fungerar inte
<code>
ALTER PROC updateCart
@cartID CHAR(36),
@prodID INT,
@quant INT,
@colorID INT,
@sizeID INT,
@clothesID INT
AS
IF(@quant <= 0)BEGIN
EXEC deleteCartItem @cartID, @prodID, @colorID, @sizeID, @clothesID
IF(@@error <> 0)GOTO error
RETURN
END
ELSE BEGIN
UPDATE cart
SET
quantity = @quant,
dateAdded = getdate()
WHERE cartID = @cartID AND productID = @prodID AND sizeID = @sizeID AND colorID = @colorID AND clothesID = @clothesID
IF(@@error <> 0)GOTO error
RETURN
END
error:
IF(@@error <> 0)BEGIN
RAISERROR('Det gick inte att uppdatera din korg.', 16, 1)
RETURN
END
</code>Sv: Uppdateringen fungerar inte
prodID, colorID och clothesID är alla 0 det är ju därför det inte uppdateras. Jag har ändrat lite i koden så jag skickar upp den igen.
<code>
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
populateControls();
}
private void populateControls()
{
this.Title = ConfigurationManager.AppSettings["SiteName"] + " - Din varukorg";
DataTable dt = CartAccess.GetCartItems();
if (dt.Rows.Count == 0)
{
grdCart.Visible = false;
lblCartTotAmount.Visible = false;
lblStatus.ForeColor = System.Drawing.Color.Red;
lblStatus.Text = "Din varukorg är tom";
lblCartInfo.Visible = false;
}
else
{
grdCart.DataSource = dt;
grdCart.DataBind();
lblStatus.ForeColor = System.Drawing.Color.Green;
lblStatus.Text = "Dessa varor finns i din varukorg";
decimal amount = CartAccess.GetCartTotalAmount();
lblCartTotAmount.Text = String.Format("{0:c}", amount);
}
}
protected void btnUpdateCart_Click(object sender, EventArgs e)
{
int rowsCount = grdCart.Rows.Count;
GridViewRow row;
TextBox txtQuantity;
TextBox txtColorID;
TextBox txtSizeID;
TextBox txtClothesID;
int colorID;
int sizeID;
int clothesID;
int prodID;
int quantity;
bool success = true;
for (int i = 0; i < rowsCount; i++)
{
row = grdCart.Rows[i];
prodID = Int32.Parse(grdCart.DataKeys[i].Value.ToString());
txtQuantity = (TextBox)row.FindControl("txtQuantity");
txtClothesID = (TextBox)row.FindControl("txtClothesID");
txtColorID = (TextBox)row.FindControl("txtColorID");
txtSizeID = (TextBox)row.FindControl("txtSizeID");
if (Int32.TryParse(txtClothesID.Text, out clothesID))
clothesID = int.Parse(txtClothesID.Text);
if (Int32.TryParse(txtColorID.Text, out colorID))
colorID = int.Parse(txtColorID.Text);
else
colorID = 0;
if (Int32.TryParse(txtSizeID.Text, out sizeID))
sizeID = int.Parse(txtSizeID.Text);
if (Int32.TryParse(txtQuantity.Text, out quantity))
quantity = int.Parse(txtQuantity.Text);
// Test för att se vad variablerna har för värde...
lblStatus.Text += "<br />ProdID: " + prodID.ToString();
lblStatus.Text += "<br />Quant: " + quantity.ToString();
lblStatus.Text += "<br />colorID: " + colorID.ToString();
lblStatus.Text += "<br />sizeID: " + sizeID.ToString();
lblStatus.Text += "<br />clothesID: " + clothesID.ToString();
success = CartAccess.UpdateCart(prodID, quantity, colorID, sizeID, clothesID);
lblStatus.Text += success ? "Good" : "Fail";
}
// bortkommenterat för att jag skafå fram lblStatus...
//populateControls();
}
</code>Sv:Uppdateringen fungerar inte