【ASP.NET コントロール】ListViewコントロール

サンプル

* “itemPlaceHolder” : 個別項目を表す
<asp:ListView ID="ListView1" runat="server" DataKeyNames="CompanyCode,Code" 
    DataSourceID="SqlDataSource1">
    <EmptyDataTemplate>
        <span></span>
    </EmptyDataTemplate>
    <ItemTemplate>
        <span style="">CompanyCode:
        <asp:Label ID="CompanyCodeLabel" runat="server" 
            Text='<%# Eval("CompanyCode") %>' />
        <br />
        Code:
        <asp:Label ID="CodeLabel" runat="server" Text='<%# Eval("Code") %>' />
        <br />
        Name:
        <asp:Label ID="NameLabel" runat="server" Text='<%# Eval("Name") %>' />
        <br />
    </ItemTemplate>
    <LayoutTemplate>
        <div ID="itemPlaceholderContainer" runat="server" style="">
            <span runat="server" id="itemPlaceholder" />
        </div>
    </LayoutTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ 【接続文字列】 %>" 
    SelectCommand="SELECT [CompanyCode], [Code], [Name] FROM [Brunch]">
</asp:SqlDataSource>

あれこれ

データのソート

 * CommandNameを"Sort"にして、CommandArgumentにソートしたい列名を指定する

サンプル

・・・略・・・
<LayoutTemplate>
    <%-- ↓ここでソート↓ -->
    <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument="【DBの項目(codeなど)】" CommandName="sort">Sort</asp:LinkButton>
    <div ID="itemPlaceholderContainer" runat="server" style="">
        <span runat="server" id="itemPlaceholder" />
    </div>
</LayoutTemplate>
・・・略・・・

参考文献:作成デモ

http://www.youtube.com/watch?v=sAa1MKEwMHw&feature=related
http://ket-memo.cocolog-nifty.com/blog/2009/04/aspnet-35-listv.html

イベント

ItemDataBound

http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.listview.itemdatabound.aspx
 * 動的にスタイルを設定するには、ItemDataBoundイベントを利用する
http://www.atmarkit.co.jp/fdotnet/aspnet/aspnet13/aspnet13_03.html

バインドしたデータを取得

http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.listview.itemdatabound.aspx
Protected Sub ContactsListView_ItemDataBound(ByVal sender As Object, _
                                             ByVal e As ListViewItemEventArgs)
    If e.Item.ItemType = ListViewItemType.DataItem Then
        Dim rowView As System.Data.DataRowView = DirectCast(e.Item.DataItem, System.Data.DataRowView)
        Dim value As String = rowView("【バインドした項目名】").ToString()
    End If
End Sub

データバインドが各項目に対して実行される際に発生するItemDataBoundイベントをハンドルする

http://naosan.way-nifty.com/blog/2010/08/aspnetlistview-.html
http://d.hatena.ne.jp/tanachhi/20090815/1250348278

TotalRowCountAvailable

http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.ipageableitemcontainer.totalrowcountavailable.aspx

SelectedIndexChanging

http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.listview.selectedindexchanging.aspx

SelectedIndexChanged

http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.listview.selectedindexchanged.aspx