Listview项Eval字段如何在updatePanel中更新?

时间:2014-09-11 19:56:26

标签: updatepanel postback listviewitem

我有一个列表视图来显示有价格的产品。我在ItemTemplate中放了一个updatePanel。 当我单击contentTemplate中的按钮时,Eval字段不会更新,按照定义 更新面板执行部分回发但不反映数据库更改。

        

         <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>

我感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

这是因为您正在动态添加它们。当您回发时,它会丢失该状态,如果您在此时未将它们添加回来(即将它们保存到viewstate并添加回来在加载时,它不再知道它们存在。

答案 1 :(得分:0)

我找到了解决方案。 如果要在列表视图中使用更新面板,则应该在代码中绑定数据源 - 页面加载。

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

使用sqlDataSource属性时,更新面板无法正常运行。