Search code examples
updatepanelpostbacklistviewitem

How Listview Item Eval field does not updated in an updatePanel?


I have a list view to show products with prices. I put an updatePanel in ItemTemplate. When I Click the button in contentTemplate, the Eval fields do not update, By definition the update panel do a partial post back but it does not reflect database changes.

         <ContentTemplate>
             <asp:ImageButton ID="productPic" runat="server" Height="270" Width="202" ImageUrl='<%# Eval("ImageUrl") %>' />

             <asp:Table ID="ColorTable" runat="server" EnableViewState="true"></asp:Table>
             <asp:Button ID="Button1" runat="server" Text="Button" />
             <asp:Literal ID="LitProductId" runat="server" Text='<%# Eval("ProductId") %>' EnableViewState="true"></asp:Literal>
             <asp:Label ID="Label2" runat="server" Text='<%# Eval("Name") %>' Font-Size="8"
                                    Font-Bold="False" Font-Names="tahoma" />
             <br />
             <asp:Label ID="Label3" runat="server" Text='<%# Eval("Price","{0:0,0}") %>' Font-Size="8" Font-Bold="False" Font-Names="tahoma"
                                    Font-Strikeout='<%# Eval("DiscountedPrice")!=DBNull.Value %>' />
             <br />
             <asp:Label ID="Label4" runat="server" Text='<%# Eval("DiscountedPrice","{0:0,0}") %>' Font-Size="10" Font-Bold="True" Font-Names="tahoma" ForeColor="Red"
                                    Visible='<%# Eval("DiscountedPrice")!=DBNull.Value %>' />
             <br />
     </ContentTemplate>
 </asp:UpdatePanel>
 <br />
  </td>

I appreciate any help.


Solution

  • I found the solution. If you want to use update panel inside a listview, you should bind the data source in code - page load.

    ListView1.DataSource = new ProductFacade().GetCat3ProductListSpec(cat3Id);
    ListView1.DataBind();
    

    When you use sqlDataSource attribute, the update panel does not function as you expect.