2013-05-12 28 views
1

我正在開發Windows應用商店。我正在使用sqlite數據庫,我想把選擇查詢的結果放入列表視圖。我的列表視圖有網格和這些網格內的文本框。但是,但我不能在c#中定位這些文本框,當我給他們的名字。下面是從項目的代碼示例: 首先SQLite的查詢:Windows Store應用程序將sqlite查詢寫入列表視圖的文本塊

private void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
    string DBPath = string.Empty; 
    DBPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "mydb.s3db"); 

    using (var db= new SQLite.SQLiteConnection(DBPath)) 
    { 
     var query= db.Table<company>(); 
     var result= query.ToList(); 

     foreach(var x in result) 
     { 
      company frm= new company(); 
      //addition to listview... 
     } 
    } 

} 

一切完美,除了上面輸入到列表視圖。我用列表視圖之外的文本塊來測試它。

和XAML:

<ListView Name="lv" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="10,10,10,10" Grid.Row="3" Grid.RowSpan="11" Grid.ColumnSpan="8"> 
    <ListView.HeaderTemplate> 
     <DataTemplate> 
      <Grid Loaded="gHeader_Loaded"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
       </Grid.ColumnDefinitions> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 
       <TextBlock Grid.Row="2" Grid.Column="0" Text="company no" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="1" Text="company name" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="2" Text="phone" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="3" Text="fax" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="4" Text="address" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="5" Text="state" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="6" Text="city" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <ComboBox Grid.Row="2" Grid.Column="7" HorizontalAlignment="Center" VerticalAlignment="Center"> 
        <ComboBoxItem Content="test1"></ComboBoxItem> 
        <ComboBoxItem Content="test2"></ComboBoxItem> 
        <ComboBoxItem Content="test3"></ComboBoxItem> 
        <ComboBoxItem Content="test4"></ComboBoxItem> 
        <ComboBoxItem Content="test5"></ComboBoxItem> 
       </ComboBox> 
      </Grid> 
     </DataTemplate> 
    </ListView.HeaderTemplate> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Grid Loaded="gHeader_Loaded"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
        <ColumnDefinition /> 
       </Grid.ColumnDefinitions> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 
       <TextBlock x:Name="test" Grid.Row="2" Grid.Column="0" Text="" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="1" Text="" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="1" Text="" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="1" Text="" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="2" Text="" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="3" Text="" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="4" Text="" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Row="2" Grid.Column="5" Text="" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

對不起,長的帖子,我想給有關該計劃的詳細信息,那麼也許你可以看到什麼地方出了錯。我將不勝感激任何幫助/反饋。

我的問候......

回答

1

您需要使用數據綁定使用ListView。

首先您的收藏綁定到這樣的ListView控件:

private void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
    ** snip **  
    using (var db= new SQLite.SQLiteConnection(DBPath)) 
    { 
     var query= db.Table<company>(); 
     lv.ItemsSource = query.ToList(); 
    } 
} 

之後,你可以的DataTemplate你對象的屬性裏面綁定。讓我們假設你的公司類是這樣定義的:

public class Company 
{ 
    public string Name{get; set;} 
} 

然後你就可以做到這一點你的ItemTemplate裏面:

<ListView.ItemTemplate> 
    <DataTemplate> 
     <Grid Loaded="gHeader_Loaded"> 
      <Grid.ColumnDefinitions> 
       ** snip ** 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       ** snip ** 
      </Grid.RowDefinitions> 
      <TextBlock Grid.Row="2" Grid.Column="0" Text="{Binding Name}" /> 
      ** snip ** 
     </Grid> 
    </DataTemplate> 
</ListView.ItemTemplate> 

當渲染每一個項目,它看起來在當前實例(company型),提取Name屬性並將其作爲TextBlock的值。

+0

非常感謝先生! – Alasse 2013-05-12 23:13:37

+0

沒問題,樂意幫忙。請不要忘記投票/接受答案,如果它幫助你 – Kenneth 2013-05-12 23:14:09

相關問題