ListViewを使用する WPF
		
	 
	
	
	
	 
	
		
			ListViewを使用する WPF
			
			データグリッドとよく似た物に、リストビューがある。 
			違う所は、と思ってみると、そんなに違うことが無いのかも? 
			Windows版では、アイコンモードなど多岐にわたってプロパティーで変更できた気がしますが、 
			WPF版は、ゴリゴリと手で書かなければだめらしい。 
			となれば、DataGridぽくもできてしまう。 
			どちらを使うか悩みが増えるかも? 
			とりあえず、データを表示してみる。 
			基本は、 
			<ListView> 
			  <ListView.View> 
			    <GridView> 
			      <GridViewColumn  DisplayMemberBinding="{Binding 県}" Header="県"/> 
			の構造。 
			Button1_Clickの方は、XAMLにデータバインドを書いて、Me.ListView1.ItemsSourceに、DataViewを入れておくだけ。 
			個人的にはこちらの方が好み。 
			 
			Button2_Clicknのほうは、VBでバインド等を行う方法。 
			これだと、SQLの変更が、表示順に影響するのでちょっと心もとないですね。 
			 
			  
			
			
<Window x:Class="WindowListView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WindowListView" Height="300" Width="840">
    <Grid>
        <ListView Height="199" HorizontalAlignment="Left" Margin="12,12,0,0" Name="ListView1" VerticalAlignment="Top" Width="378" ItemsSource="{Binding}">
            <ListView.View>
                <GridView>
                    <GridViewColumn  DisplayMemberBinding="{Binding 県}" Header="県"/>
                    <GridViewColumn  DisplayMemberBinding="{Binding 郵便番号}" Header="郵便番号"/>
                    <GridViewColumn  DisplayMemberBinding="{Binding 市区町村}" Header="市区町村"/>
                    <GridViewColumn  DisplayMemberBinding="{Binding 町域}" Header="町域"/>
                </GridView>
            </ListView.View>
        </ListView>
        <Button Content="SQLserver" Height="24" HorizontalAlignment="Left" Margin="12,0,0,12" Name="Button1" VerticalAlignment="Bottom" Width="91" />
        <Button Content="手動" Height="26" HorizontalAlignment="Left" Margin="412,223,0,0" Name="Button2" VerticalAlignment="Top" Width="99" />
        <ListView Height="200" HorizontalAlignment="Left" Margin="398,16,0,0" Name="ListView2" VerticalAlignment="Top" Width="408" />
    </Grid>
</Window>
			
 
Imports System.Data 
Imports System.Data.SqlClient 
Imports System.Collections.ObjectModel 'これをインポートする必要がある! 
 
 
Public Class WindowListView 
 
 
    Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click 
        'SQLサーバからKEN_ALLを検索取得 
 
        Dim DA As New SqlDataAdapter 
        Dim cnn As New SqlConnection 
        Dim cmnd As New SqlCommand 
        Dim ds As DataSet = New DataSet 
 
 
        Try 
            'すべてのテーブル内のすべての行を削除して、データの DataSet を消去します。 
            ds.Clear() 
 
            'コネクションストリングを設定 
            cnn.ConnectionString = "user id=vbuser;password=sa;initial catalog=MYTEST;data source=(local);Connect Timeout=5" 
            'cnn.ConnectionString = "user id=vbuser;password=sa;initial catalog=MYTEST;data source=PC名\SQLEXPRESS;Connect Timeout=5" 
            'この接続は明示的にオープンクローズする必要がない。Fillでオープンクローズを勝手にしてくれる 
 
            Dim i As New System.Diagnostics.Stopwatch() 
 
            i.Start() 
 
            'SQL文を設定し、コマンドにコネクションを設定する 
            Dim MySQL As String 
            'わざと並びを変えて 
            MySQL = "SELECT top 10 県,cast([郵便番号] as decimal) AS 郵便番号,市区町村,町域 FROM KEN_ALL WHERE 県 in('北海道')" 
            cmnd.CommandText = MySQL 
            cmnd.Connection = cnn 
 
            'データアダプターにコマンドを設定 
            DA.SelectCommand = cmnd 
 
            'レコード数の取得 
            Dim reCount As Integer 
 
            'データセットにデータの実態を取得する() 
            reCount = DA.Fill(ds, "KEN_ALL") 
 
            'MessageBox.Show(reCount) 
 
            Dim tbv As New DataView 
            tbv.Table = ds.Tables("KEN_ALL") 
 
 
            Me.ListView1.ItemsSource = tbv 
 
 
            i.Stop() 
            Debug.Print(i.ElapsedMilliseconds.ToString) 
 
 
        Catch ex As Exception 
            MessageBox.Show(ex.Message, "SQL検索", MessageBoxButton.OK, MessageBoxImage.Error) 
        End Try 
    End Sub 
 
    Private Sub Button2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click 
 
 
        'SQLサーバからKEN_ALLを検索取得 
 
        Dim DA As New SqlDataAdapter 
        Dim cnn As New SqlConnection 
        Dim cmnd As New SqlCommand 
        Dim ds As DataSet = New DataSet 
 
 
        Try 
            'すべてのテーブル内のすべての行を削除して、データの DataSet を消去します。 
            ds.Clear() 
 
            'コネクションストリングを設定 
            cnn.ConnectionString = "user id=vbuser;password=sa;initial catalog=MYTEST;data source=(local);Connect Timeout=5" 
            'cnn.ConnectionString = "user id=vbuser;password=sa;initial catalog=MYTEST;data source=PC名\SQLEXPRESS;Connect Timeout=5" 
            'この接続は明示的にオープンクローズする必要がない。Fillでオープンクローズを勝手にしてくれる 
 
            Dim i As New System.Diagnostics.Stopwatch() 
 
            i.Start() 
 
            'SQL文を設定し、コマンドにコネクションを設定する 
            Dim MySQL As String 
            'わざと並びを変えて 
            MySQL = "SELECT top 10 郵便番号,市区町村,町域 FROM KEN_ALL WHERE 県 in('北海道')" 
            cmnd.CommandText = MySQL 
            cmnd.Connection = cnn 
 
            'データアダプターにコマンドを設定 
            DA.SelectCommand = cmnd 
 
            'レコード数の取得 
            Dim reCount As Integer 
 
            'データセットにデータの実態を取得する() 
            reCount = DA.Fill(ds, "KEN_ALL") 
 
            'MessageBox.Show(reCount) 
 
            Dim tbv As New DataView 
            tbv.Table = ds.Tables("KEN_ALL") 
 
            Dim gv As GridView = New GridView 
            Dim gvc1 As New GridViewColumn 
            Dim gvc2 As New GridViewColumn 
 
            gvc1.Header = "郵便番号" 
            gvc1.DisplayMemberBinding = New Binding(String.Format("[0]")) 
            gv.Columns.Add(gvc1) 
            ListView2.View = gv 
 
            gvc2.Header = "市区町村" 
            gvc2.DisplayMemberBinding = New Binding(String.Format("[1]")) 
            gv.Columns.Add(gvc2) 
            ListView2.View = gv 
 
            Me.ListView2.ItemsSource = tbv 
 
 
            i.Stop() 
            Debug.Print(i.ElapsedMilliseconds.ToString) 
 
 
        Catch ex As Exception 
            MessageBox.Show(ex.Message, "SQL検索", MessageBoxButton.OK, MessageBoxImage.Error) 
        End Try 
 
    End Sub 
End Class
 
  |  
  
			
	
	
	
	
	
	 
	
		
		 
	
	 |