select data from sqlite database and binding values to listbox item in windows phone 8 apps

后端 未结 2 1362
误落风尘
误落风尘 2021-01-22 05:39

I am trying to creating windows phone 8 project with database (sqlite) techniques

I have tried the following:

1) Download sqlite fie from server & saved it

相关标签:
2条回答
  • 2021-01-22 06:00

    i got it., according to "Jan Smuda " reply i found solution for that .,

    i removed the binding syntax (ItemsSource="{Binding}") in XAML code for both listpicker and listbox and add itemsSource in code itself., like this

    so my XAML code like this:

       <ListBox Name="scheduleListbox" Margin="5,85,5,60" >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid Height="100" Width="480" Margin="0,0,0,5" Background="CadetBlue">
                            <Grid.RowDefinitions>
                            <RowDefinition Height="*"></RowDefinition>
                            <RowDefinition Height="*"></RowDefinition>
                                <RowDefinition Height="*"></RowDefinition>
                            </Grid.RowDefinitions>
                            <TextBlock Text="{Binding team1_Name}" Name="team1Name" Foreground="White"></TextBlock>
                            <TextBlock Grid.Row="1" Text="{Binding team2_Name}" Name="team2Name" Foreground="Red"></TextBlock>
                            <TextBlock Grid.Row="2" Text="{Binding venue}" Name="venue" Foreground="Yellow"></TextBlock>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
            <toolkit:ListPicker Name="selectTeam" Height="60" VerticalAlignment="Bottom" Background="Black" FullModeHeader="Select your Team Schedule" Foreground="White" ExpansionMode="FullScreenOnly" Margin="5,0" SelectionChanged="selectTeam_SelectionChanged">
                <toolkit:ListPicker.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Name="listpickerStackpannel" >
                            <TextBlock Text="{Binding}" TextAlignment="Center" FontFamily="Times New Roman" FontSize="30"></TextBlock>
                        </StackPanel>
                    </DataTemplate>
                </toolkit:ListPicker.ItemTemplate>
                <toolkit:ListPicker.FullModeItemTemplate>
                    <DataTemplate>
                        <StackPanel Name="listpickerStackpannel" Margin="10">
                            <TextBlock Text="{Binding}" TextAlignment="Center" FontFamily="Times New Roman" FontSize="30"></TextBlock>
                        </StackPanel>
                    </DataTemplate>
                </toolkit:ListPicker.FullModeItemTemplate>
            </toolkit:ListPicker>
    

    and my CS code like this :

        string country = "Full Schedule";
        List<match_schedule> ScheduleList;
        // the local folder DB path
        string DB_PATH = Path.Combine(ApplicationData.Current.LocalFolder.Path, "sample.sqlite");
        //SQLite connection
        private SQLiteConnection dbConn;
        ProgressIndicator _progressIndicator = new ProgressIndicator();
        private List<string> _source = new List<string>
        {
            "Full Schedule","Afghanistan","Australia","Bangladesh","England","Hong Kong","India","Ireland","Nepal","Netherlands","New Zealand","Pakistan","South Africa","Sri Lanka","UAE","West Indies","Zimbabwe"
        };
        public Schedule()
        {
            InitializeComponent();
            selectTeam.ItemsSource = _source;
            Loaded += Schedule_Loaded;
        }
    
        void Schedule_Loaded(object sender, RoutedEventArgs e)
        {
    
        }
    
        private void selectTeam_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            country = (sender as ListPicker).SelectedItem.ToString();
            dbConn = new SQLiteConnection(DB_PATH);
            /// Create the table Task, if it doesn't exist.
            dbConn.CreateTable<match_schedule>();
    
            if (country == "Full Schedule")
            {
                ScheduleList = dbConn.Query<match_schedule>("select * from tableName").ToList<match_schedule>();
            }
            else
            {
               ScheduleList = dbConn.Query<match_schedule>("select * from tableName where team1_Name=? or team2_Name=?", country).ToList<match_schedule>();
            }
            scheduleListbox.ItemsSource = ScheduleList;         
        }
    }
    public class match_schedule
    {
        [PrimaryKey, AutoIncrement]
        public int match_id { get; set; }
        public string team1_Name { get; set; }
        public string team2_Name { get; set; }
        public string match_no { get; set; }
        public string group { get; set; }
        public string venue { get; set; }
        public string time { get; set; }
        public string day { get; set; }
    }
    

    Finally I Got to retrieve column values from my local SQLite Database and i bind it in listbox.,

    Lot of thanks to jan Smuda for responding me and thanks to stack overflow also.,

    0 讨论(0)
  • 2021-01-22 06:22

    I can't see any code where you are adding data to a ListBox. If you have data pulled from the database, add it to ItemsSource property that's all.

    scheduleListbox.ItemsSource = retrievedTasks;
    

    I do not understand why you use ItemsSource="{Binding}" on selectTeam ListPicker when you fill it in the constructor. And why do you use the same to scheduleListbox. See Binding overview

    If you youse empty binding syntax: {Binding}. The ListBox inherits the DataContext from a parent element. When the path is not specified, the default is to bind to the entire object.

    0 讨论(0)
提交回复
热议问题