Las filas no aparecen en SQL Server CE WP7

ToDoDataContext

Aquí creo un contexto para la base de datos.

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Data.Linq;

namespace My_CookBook
{
    public class ToDoDataContext : DataContext
    {
        public static string DBConnectionString = "Data Source=isostore:/kupa.sdf";

        public ToDoDataContext(string connectionString)
            : base(connectionString)
        { }

        public Table<ToDoItem> ToDoItems;
    }
}

ToDoItem

Aquí está el modelo del artículo.

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Data.Linq.Mapping;

namespace My_CookBook
{
    [Table]
    public class ToDoItem : INotifyPropertyChanged, INotifyPropertyChanging
    {
        // Define ID: private field, public property and database column.
        private int _toDoItemId;

        [Column(IsPrimaryKey=true, IsDbGenerated=true,DbType = "INT NOT NULL Identity", CanBeNull=false, AutoSync= AutoSync.OnInsert)]
        public int ToDoItemId
        {
            get
            {
                return _toDoItemId;
            }
            set
            {
                if (_toDoItemId != value)
                {
                    NotifyPropertyChanging("ToDoItemId");
                    _toDoItemId = value;
                    NotifyPropertyChanged("ToDoItemId");
                }
            }
        }

        /////////////////////////////////////// Nazwa //////////////////////////////////////////

        private string _Name;

        [Column]
        public string Name
        {
            get
            {
                return _Name;
            }
            set
            {
                if (_Name != value)
                {
                    NotifyPropertyChanging("Name");
                    _Name = value;
                    NotifyPropertyChanged("Name");
                }
            }
        }

        /////////////////////////////////////// Autor //////////////////////////////////////////

        private string _Autor;

        [Column]
        public string Autor
        {
            get
            {
                return _Autor;
            }
            set
            {
                if (_Autor != value)
                {
                    NotifyPropertyChanging("Autor");
                    _Autor = value;
                    NotifyPropertyChanged("Autor");
                }
            }
        }


        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        // Used to notify the page that a data context property changed
        private void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion

        #region INotifyPropertyChanging Members

        public event PropertyChangingEventHandler PropertyChanging;

        // Used to notify the data context that a data context property is about to change
        private void NotifyPropertyChanging(string propertyName)
        {
            if (PropertyChanging != null)
            {
                PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
            }
        }

        #endregion
    }
}

Mostrar todo

En esta página debe haber filas de visualización.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Data;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Windows.Media.Imaging;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using System.Collections.ObjectModel;
using System.ComponentModel;

namespace My_CookBook
{
    public partial class show_all : PhoneApplicationPage
    {

        // Data context for the local database
        private ToDoDataContext toDoDB;

        // Define an observable collection property that controls can bind to.
        private ObservableCollection<ToDoItem> _toDoItems;
        public ObservableCollection<ToDoItem> ToDoItems
        {
            get
            {
                return _toDoItems;
            }
            set
            {
                if (_toDoItems != value)
                {
                    _toDoItems = value;
                    NotifyPropertyChanged("ToDoItems");
                }
            }
        }

        // Constructor
        public show_all()
        {
            InitializeComponent();
            // Connect to the database and instantiate data context.
            toDoDB = new ToDoDataContext(ToDoDataContext.DBConnectionString);


            // Define the query to gather all of the to-do items.
            var toDoItemsInDB = from ToDoItem todo in toDoDB.ToDoItems
                                select todo;

            // Execute the query and place the results into a collection.
            ToDoItems = new ObservableCollection<ToDoItem>(toDoItemsInDB);

            toDoDB.SubmitChanges();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        // Used to notify the page that a data context property changed
        private void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion

    }
}

Mostrar todo xml

Uso el enlace para recuperar filas.

<Grid x:Name="ContentPanel1" Grid.Row="1" Margin="12,0,12,0">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>

            <ListBox x:Name="toDoItemsListBox" ItemsSource="{Binding ToDoItems}" 
                     Grid.Row="0" Margin="12, 0, 12, 0" Width="440">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid HorizontalAlignment="Stretch" Width="440">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="50" />
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="100" />
                            </Grid.ColumnDefinitions>

                            <TextBlock
                                Text="{Binding Path=Name}"
                                FontSize="{StaticResource PhoneFontSizeLarge}"
                                Grid.Column="1"
                                VerticalAlignment="Center"/>
                            <Button
                                Grid.Column="2"
                                x:Name="deleteTaskButton"
                                BorderThickness="0"                                
                                Margin="0">
                                <Image Source="Images/appbar.delete.rest.png"/>
                            </Button>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Grid>

Añadir nuevo

Aquí agrego una nueva fila a la base de datos:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Data;
using System.Windows.Media.Imaging;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data.Linq;
using System.Data.Linq.Mapping;

namespace My_CookBook
{
    public partial class add_new : PhoneApplicationPage
    {
        // Constructor
        public add_new()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        }

        private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            if (slider1 != null)
            {
                slider1.Value = Math.Round(e.NewValue);
                qwe((int)slider1.Value);
            }
        }

        private void qwe(int a)
        {
          stackPanel1.Height = 1250 + a * 159;
          stackPanel2.Height = a * 159;
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            CameraCaptureTask camera = new CameraCaptureTask();
            camera.Show();
            ManipulationCompletedEventArgs photo = new ManipulationCompletedEventArgs();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            ToDoDataContext toDoDB = new ToDoDataContext(ToDoDataContext.DBConnectionString);
            ToDoItem newToDo = new ToDoItem();
            newToDo.Name = textBox1.Text;
            newToDo.Autor = textBox2.Text;

            toDoDB.ToDoItems.InsertOnSubmit(newToDo);
            toDoDB.SubmitChanges();
            MessageBox.Show("Pomyślnie dodano przepis.");

            this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        // Used to notify the page that a data context property changed
        private void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
        #endregion
    }
}

Mi problema es este, el programa no muestra ninguna fila (en Show all página) de la base de datos. ¿Por qué?

En el depurador está bien. Realmente no sé lo que está mal.

preguntado el 22 de mayo de 12 a las 17:05

¿Ha avanzado con un depurador para asegurarse de que sus filas estén realmente insertadas? ¿Ha utilizado alguna otra herramienta para ver el contenido real de la base de datos para ver si sus cambios aparecen en la base de datos? -

y su botón haga clic en navegaciones navegar forward a una Un nuevo Pagina principal. no quieres navegar back a la página principal en su lugar? esto creará una lista gigante de páginas, como main->add_new->main->add_new->main->show_all, etc.

En el depurador está bien. Realmente no sé lo que está mal. Acerca de "atrás" esto no es importante ahora. -

entonces es hora de simplificar el problema. inmediatamente después de insertar, si hace la selección allí, sin ninguna navegación, ¿ve sus datos? ¿Ha utilizado el explorador de almacenamiento aislado para descargar el archivo de la base de datos y ha utilizado las herramientas sql ce contra él para verificar que los datos estén allí? -

Entonces, ¿tiene un código en app.xaml.cs que hace la consulta y obtiene los resultados correctos, pero el código en show_all hace lo mismo y no funciona? -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.