0

アイテムを繰り返し、作業中のアプリケーションに自動 (行交互) カラーを使用したいデータリストがあります。そのようにアイテムテンプレートの上にヘッダーテンプレートを追加しようとしています。

<table>
<asp:DataList ID="DataList1" runat="server" CellPadding="4" DataKeyField="num" DataSourceID="SqlDataSource1" ForeColor="#333333" OnItemDataBound="DataList1_ItemDataBound">
        <AlternatingItemStyle BackColor="White" />
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <ItemStyle BackColor="#EFF3FB" />
        <HeaderTemplate>
        <tr>
            <th>Item Name</th>
            <th>Item Type</th>
            <th>Item Price</th>
            <th>End(s) In</th>
        </tr>
        </HeaderTemplate>
        <ItemTemplate>

            <tr>
            <td><a class="rolls2" href="ItemView.aspx?ItemName=<%# Eval("ItemName") %>&num=<%# Eval("num") %>"><%# Eval("ItemName") %></a></td>
            <td><%# Eval("ItemType")%></td>
            <td>$ <%# Eval("ItemPrice")%></td>
            <td><asp:Label ID="lblExp" Text='<%# Bind("CreateDate") %>' runat="server" /></td>
            </tr>

        </ItemTemplate>
        <SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
    </asp:DataList>
<table>

このコードを実行すると、オブジェクトの参照に設定されていないオブジェクトが取得され、それは を指しlblExpます。ヘッダーを削除すると、プロジェクトは正常に実行されます。テーブルにヘッダーを簡単に追加する別の方法はありますか?

4

1 に答える 1

2

あなたのコードを見ずにこれを診断するのは難しいですが、あなたのメソッドは最初のものをチェックせずにコントロールDataList1_ItemDataBoundを見つけようとしていると思います.lblExpe.Iteme.Item.ItemType

このイベントは、ヘッダーを含むリスト内のすべての項目に対して発生し、ヘッダーには というコントロールが含まれていませんlblExp

ItemTypeアイテムを処理する前に確認する必要があります。

protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
   switch (e.Item.ItemType)
   {
      case ListItemType.Item:
      case ListItemType.AlternatingItem:
      case ListItemType.SelectedItem:
      case ListItemType.EditItem:
      {
         Label lblExp = (Label)e.Item.FindControl("lblExp");
         ...
      }
   }
}
于 2013-06-21T16:42:26.157 に答える