如何向listview项添加方法?

时间:2011-06-17 17:47:50

标签: c# .net asp.net

下面是我的listview代码示例,当产品填充时,我想针对我的数据库检查它们中的每一个是否数量为0,如何在代码中添加方法来执行此操作:

我尝试在onselectedindexchanged事件下执行此操作,但得到“对象引用未设置为对象的实例”。例外:

感谢任何帮助。谢谢!

         using (XXXShop db = new XXXShop ())
        {
             var availability = from p in db.Products
                                where p.Quantity == 0
                                select p;

        (ListView_Products.FindControl("litStatus") as Literal).Text = "Unavailable";
        }         

ListView代码:

    <asp:ListView ID="ListView_Products" runat="server" DataKeyNames="ProductID"  
    DataSourceID="EDS_ProductsByCategory" GroupItemCount="3" 
    onselectedindexchanged="Page_Load">
   <EmptyDataTemplate><table runat="server"><tr><td>No data was returned.</td></tr></table></EmptyDataTemplate>
    <EmptyItemTemplate><td runat="server" /></EmptyItemTemplate>
    <GroupTemplate><tr ID="itemPlaceholderContainer" runat="server"><td ID="itemPlaceholder" runat="server"></td></tr></GroupTemplate>
    <ItemTemplate>
        <td runat="server">
            <table border="0" width="295">
              <%-- Product pics --%>
                <tr>        
                    <td style="vertical-align: middle; text-align: center;">
                        <a href='ProductDetails.aspx?productID=<%# Eval("ProductID") %>'>
                            <image src='Catalog/Images/Thumbs/<%# Eval("ProductImage") %>' width="195" height="270" border="0">
                        </a>
                    </td>
                </tr>
                <tr>
                    <%-- Product info, description, price...etc --%>
                     <td style="width: 250px; vertical-align: middle; text-align: center; padding-bottom: 5px;">                          
                     <b>Price: </b><%# Eval("UnitCost", "{0:c}")%>                 
                    </td>                                       
                </tr>
                <tr>
                     <td style="width: 250px; vertical-align: middle; text-align: center; padding-bottom: 25px;">
                         <asp:Literal ID="litStatus" runat="server" />
                     </td>
                </tr>                               
              </table>

        </td>
    </ItemTemplate>
    <LayoutTemplate>
        <table runat="server">
            <tr runat="server">
                <td runat="server">
                    <table ID="groupPlaceholderContainer" runat="server">
                        <tr ID="groupPlaceholder" runat="server"></tr>
                    </table>
                </td>
            </tr>
            <tr runat="server"><td runat="server"></td></tr>
        </table>
    </LayoutTemplate>
</asp:ListView>

2 个答案:

答案 0 :(得分:1)

我没有用ASP.NET做过那么多或使用ListView所以我不知道是否有更好的方法可以做到这一点,但你可以为你的代码隐藏添加一个可以格式化的方法您想要的数据。如下所示:

protected string FormattedQuantity(int quantity)
{
  return quantity > 0 ? quantity.ToString() : "Unavailable";
}

然后,您应该可以通过执行以下操作在aspx文件中的任何位置使用此格式化程序:

<asp:Label ID="OccurrenceLabel" runat="server" 
  Text='<%# FormattedQuantity((int)Eval("Quantity")) %>' />

答案 1 :(得分:1)

ListView.ItemDataBound活动

中查看