Greetings;
I have a webpage that contains the following:
And here is the codebehind:
I have a webpage that contains the following:
- RadAjaxManager.
- Repeater.
- Datalist, inside that repeater that's being populted dynamically on repeater's itemDatabound.
- Label.
Inside every datalist row there is a button that initiates DataList ItemCommand, where it updates the label.
Inside repeater ItemDataBound I am adding the AjaxSettings for the RadAjaxManager.
The problem is, when I click on the button that's inside the datalist, the loading panel shows up and never disappear.
Here is my ASPx code:
| <radA:RadAjaxManager ID="RadAjaxManager1" runat="server"> |
| </radA:RadAjaxManager> |
| <asp:Repeater ID="rpCategories" runat="server" DataSourceID="dsCategories" |
| onitemdatabound="rpCategories_ItemDataBound"> |
| <HeaderTemplate> |
| <table width="100%" cellpadding="0" cellspacing="0" border="1" bordercolor="#ffffff"> |
| </HeaderTemplate> |
| <ItemTemplate> |
| <tr> |
| <td> |
| <asp:Literal ID="litCatID" runat="server" Text='<%# Eval("CategoryID") %>' Visible="false"></asp:Literal> |
| <asp:Image runat="server" ID="imgCat" ImageUrl='<%# Eval("CategoryImage")%>' Width="100px" /> |
| <asp:label runat="server" CssClass="CatName" id="lblCatName" Text='<%# Eval("CategoryName")%>'></asp:label> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <asp:label runat="server" CssClass="CatDesc" id="lblCatDesc" Text='<%# Eval("CategoryDesc")%>'></asp:label> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <asp:DataList OnItemCommand="dlItems_OnItemCommand" DataKeyField="ProductID" ID="dlItems" Width="100%" runat="server"> |
| <HeaderTemplate> |
| <table width="100%" cellpadding="0" cellspacing="2"> |
| </HeaderTemplate> |
| <ItemTemplate> |
| <tr style="background-color:#e6caae;"> |
| <td valign="top"> |
| <asp:Literal ID="litProductID" runat="server" Text='<%# Eval("ProductID") %>' visible="false"></asp:Literal> |
| <asp:Label ID="lblModelName" runat="server" Text='<%# Eval("ModelName") %>' CssClass="ItemName"></asp:Label> |
| </td> |
| <td width="50"> |
| <asp:Label ID="lblUnitCost" runat="server" Text='<%# Eval("UnitCost") + "/person" %>' CssClass="ItemDesc"></asp:Label> |
| </td> |
| <td width="50" rowspan="2"> |
| <asp:Button CommandName="AddToBasket" CommandArgument='<%# Eval("ProductID") %>' ID="btnAddToBasket" runat="server" Text="Add to basket" /> |
| </td> |
| </tr> |
| <tr style="background-color:#e6caae;"> |
| <td colspan="2" valign="top"> |
| <asp:Label ID="lblDesc" runat="server" Text='<%# Eval("Description") %>' CssClass="ItemDesc"></asp:Label> |
| </td> |
| </tr> |
| <tr style="background-color:#e6caae;"> |
| <td colspan="3"> |
| <span class="ItemDesc"># of persons:</span> <asp:TextBox ID="txtPersons" runat="server" Text="1"></asp:TextBox> |
| </td> |
| </tr> |
| <tr style="background-color:#e6caae;"> |
| <td colspan="3"> |
| <span class="ItemDesc">Notes:</span> <asp:TextBox ID="txtNotes" runat="server" Text="" style="width:83%"></asp:TextBox> |
| </td> |
| </tr> |
| <tr> |
| <td colspan="3"><hr /></td> |
| </tr> |
| </ItemTemplate> |
| <FooterTemplate> |
| </table> |
| </FooterTemplate> |
| </asp:DataList> |
| </ItemTemplate> |
| <FooterTemplate> |
| </td> |
| </tr> |
| </table> |
| </FooterTemplate> |
| </asp:Repeater> |
| <asp:SqlDataSource ID="dsCategories" runat="server" |
| SelectCommand="SELECT * FROM [CMRC_Categories] ORDER BY [SortNo]"> |
| </asp:SqlDataSource> |
| </td> |
| <td style="width:30%" valign="top"> |
| <div id="MiniBasket" style="position:relative"> |
| <asp:DataList ID="dlBasket1" runat="server" DataSourceID="dsOrder" |
| BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" |
| CellPadding="3" CellSpacing="2" GridLines="Both"> |
| <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" /> |
| <ItemStyle BackColor="#FFF7E7" ForeColor="#8C4510" /> |
| <SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" /> |
| <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" /> |
| <ItemTemplate> |
| <table cellspacing="1" class="style1"> |
| <tr> |
| <td> |
| <asp:Label ID="lblITem" runat="server" Text='<%# Eval("ModelName") %>'></asp:Label> |
| </td> |
| <td> |
| <asp:Label ID="lblQuan" runat="server" Text='<%# Eval("Quantity") %>'></asp:Label> |
| </td> |
| <td><asp:Button ID="Button1" runat="server" Text="Button" /></td> |
| </tr> |
| </table> |
| </ItemTemplate> |
| </asp:DataList> |
| <asp:Label ID="lblCount" runat="server" Text="0"></asp:Label> |
| <asp:SqlDataSource ID="dsOrder" runat="server" |
| SelectCommand="SELECT dbo.CMRC_ShoppingCart.UserName, dbo.CMRC_ShoppingCart.IsCheckedOut, dbo.CMRC_ShoppingCartItems.Quantity, dbo.CMRC_ShoppingCartItems.ModelName, dbo.CMRC_ShoppingCartItems.Price, dbo.CMRC_ShoppingCartItems.BasketItemID, dbo.CMRC_ShoppingCart.cartID FROM dbo.CMRC_ShoppingCart INNER JOIN dbo.CMRC_ShoppingCartItems ON dbo.CMRC_ShoppingCart.cartID = dbo.CMRC_ShoppingCartItems.CartID WHERE (dbo.CMRC_ShoppingCart.IsCheckedOut = 0) AND (dbo.CMRC_ShoppingCart.UserName = @Username)"> |
| </asp:SqlDataSource> |
And here is the codebehind:
| public partial class Order : System.Web.UI.Page |
| { |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| dsCategories.ConnectionString = LesPreasso.Properties.Settings.Default.ConnectionString; |
| dsOrder.ConnectionString = LesPreasso.Properties.Settings.Default.ConnectionString; |
| dsOrder.SelectParameters.Add("username", this.User.Identity.Name); |
| } |
| protected void rpCategories_ItemDataBound(object sender, RepeaterItemEventArgs e) |
| { |
| DataList dl = new DataList(); |
| Literal pcatid; |
| dl = (DataList)(e.Item.FindControl("dlItems")); |
| pcatid = (Literal)e.Item.FindControl("litCatID"); |
| if (!(dl ==null)) |
| { |
| DataSet oData = new DataSet(); |
| SqlConnection conn = new SqlConnection(); |
| conn.ConnectionString = LesPreasso.Properties.Settings.Default.ConnectionString; |
| SqlDataAdapter cmd = new SqlDataAdapter("select * from CMRC_Products where CategoryID=@CategoryID", conn); |
| cmd.SelectCommand.Parameters.AddWithValue("CategoryID", pcatid.Text); |
| cmd.Fill(oData); |
| if (oData.Tables[0].Rows.Count > 0) |
| { |
| dl.DataSource = oData.Tables[0].DefaultView; |
| dl.DataBind(); |
| } |
| RadAjaxManager1.AjaxSettings.AddAjaxSetting(dl, lblCount, LoadingPanel1); |
| } |
| } |
| protected void dlItems_OnItemCommand(object sender, DataListCommandEventArgs e) |
| { |
| if (e.CommandName=="AddToBasket") |
| { |
| lblCount.Text= Convert.ToString(Convert.ToInt32(lblCount.Text)+ 1); |
| } |
| } |
| } |