我有一个列表视图来显示带有价格的产品。我在ItemTemplate中放入了一个updatePanel。当我单击contentTemplate中的按钮时,Eval字段不会更新,根据定义更新面板做了一个部分的postback,但它并没有反映数据库的变化。
<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>
我感谢你的帮助。
这是因为你正在动态地将它们添加到中。当你发布时,它会丢失该状态,如果你当时没有将它们添加回中(即将它们保存到viewstate并在加载时添加回中),它就不再知道它们的存在。
我找到了解决方案。如果您想在列表视图中使用更新面板,您应该在代码页加载中绑定数据源。
ListView1.DataSource = new ProductFacade().GetCat3ProductListSpec(cat3Id);
ListView1.DataBind();
当您使用sqlDataSource属性时,更新面板的功能不会如您所期望的那样。