我有一个列表视图来显示有价格的产品。我在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>
我感谢任何帮助。
答案 0 :(得分:0)
这是因为您正在动态添加它们。当您回发时,它会丢失该状态,如果您在此时未将它们添加回来(即将它们保存到viewstate并添加回来在加载时,它不再知道它们存在。
答案 1 :(得分:0)
我找到了解决方案。 如果要在列表视图中使用更新面板,则应该在代码中绑定数据源 - 页面加载。
ListView1.DataSource = new ProductFacade().GetCat3ProductListSpec(cat3Id);
ListView1.DataBind();
使用sqlDataSource属性时,更新面板无法正常运行。