none
CRUD (ABM) xamarin RRS feed

  • Pertanyaan

  • Hola estoy tratando de hacer un proyecto para android y me esta costando el tema de manejo de datos. Necesito armar un menú (ejemplo) clientes, que en ese menu me muestre los botones de nuevo, modificar , eliminar y un listview con el contenido de los alumnos. El menú se como armarlo, agregar un cliente se como hacerlo, borrarlo tambien, lo que necesito saber es cuando selecciono un alumno del listview me lleve a otra pagina con esos datos y me permita editarlos y al regresar se refresque el listview principal. Muchas gracias, de este foro he aprendido muchísimo (soy un viejo programador de cobol, C, basic) gracias a este foro pude desarrollar varias aplicaciones winowsform.

    Adjunto codigo que utilizo: App.xaml.cs

                            

    using System;
    using System.IO;
    using Xamarin.Forms;
    using Xamarin.Forms.Xaml;

    [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
    namespace ABM
    {
        public partial class App : Application
        {
            public App()
            {
                InitializeComponent();

                MainPage = new NavigationPage(new Views.HomePage());
            }

            protected override void OnStart()
            {
                // Handle when your app starts
            }

            protected override void OnSleep()
            {
                // Handle when your app sleeps
            }

            protected override void OnResume()
            {
                // Handle when your app resumes
            }
        }
    }

    Clientes.cs

    using SQLite;

    namespace ABM.Views
    {
        internal class Clientes
        {
            [PrimaryKey]
            public int Id_Cliente { get; set; }
            public string Nombre_Cliente { get; set; }
            public string Direccion_Cliente { get; set; }

            public override string ToString()
            {
                return Nombre_Cliente + " " + Direccion_Cliente;
            }
        }
    }

    HomePage.cs

                                               

    using SQLite;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;

    using Xamarin.Forms;

    namespace ABM.Views
    {
    public class HomePage : ContentPage
    {
            private  ListView _listView;
            string _dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "myDBddd.db3");

            Clientes _company = new Clientes();
            private int idcli;

            public HomePage ()
    {
                var db = new SQLiteConnection(_dbPath);

                StackLayout stackLayout = new StackLayout();

                 ListView listView = new ListView();
                _listView = new ListView();
                _listView.ItemsSource = db.Table<Clientes>().OrderBy(x => x.Nombre_Cliente).ToList();
                _listView.SeparatorVisibility = SeparatorVisibility.Default;
                _listView.SeparatorColor = Color.Red;
                _listView.ItemSelected += _listView_ItemSelected;
                _listView.Header = "CLIENTE";

                stackLayout.Children.Add(_listView);

                ToolbarItem BtNuevoCliente = new ToolbarItem
                {
                    IconImageSource = ImageSource.FromFile("btnuevo.png"),
                    Order = ToolbarItemOrder.Primary,
                    Priority = 0
                };
                BtNuevoCliente.Clicked += BtNuevoCliente_Clicked;
                this.ToolbarItems.Add(BtNuevoCliente);

                ToolbarItem BtModificarCliente = new ToolbarItem
                {
                    IconImageSource = ImageSource.FromFile("btmodificar.png"),
                    Order = ToolbarItemOrder.Primary,
                    Priority = 0
                };
                BtModificarCliente.Clicked += BtModificarCliente_Clicked;
                this.ToolbarItems.Add(BtModificarCliente);

                ToolbarItem BtEliminarCliente = new ToolbarItem
                {
                    IconImageSource = ImageSource.FromFile("bteliminar.png"),
                    Order = ToolbarItemOrder.Primary,
                    Priority = 0
                };
                BtEliminarCliente.Clicked += BtEliminarCliente_Clicked; ;
                this.ToolbarItems.Add(BtEliminarCliente);

                ToolbarItem BtBuscarCliente = new ToolbarItem
                {
                    IconImageSource = ImageSource.FromFile("buscar.png"),
                    Order = ToolbarItemOrder.Primary,
                    Priority = 0
                };
                BtBuscarCliente.Clicked += BtBuscarCliente_Clicked;
                this.ToolbarItems.Add(BtBuscarCliente);

                Content = stackLayout;
    }

            private async void BtNuevoCliente_Clicked(object sender, EventArgs e)
            {
                await Navigation.PushAsync(new NuevoCliente());
                var db = new SQLiteConnection(_dbPath);
                _listView.ItemsSource = db.Table<Clientes>().OrderBy(x => x.Nombre_Cliente).ToList();
            }

            private async void BtModificarCliente_Clicked(object sender, EventArgs e)
            {
                //int id_cli = _listView.SelectedItem.ToString;
                await Navigation.PushAsync(new ModificarCliente(idcli));

            }

            private async void BtEliminarCliente_Clicked(object sender, EventArgs e)
            {
                var db = new SQLiteConnection(_dbPath);
                db.Table<Clientes>().Delete(x => x.Id_Cliente == _company.Id_Cliente);
                await Navigation.PopAsync();
                _listView.ItemsSource = db.Table<Clientes>().OrderBy(x => x.Nombre_Cliente).ToList();
            }

            private async void BtBuscarCliente_Clicked(object sender, EventArgs e)
            {
                await Navigation.PushAsync(new BuscarCliente());
            }

            private void _listView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
            {
                _company = (Clientes)e.SelectedItem;
                 idcli = (int)e.SelectedItemIndex;
                _listView.Header = idcli;
            }
        }
    }

    NuevoCliente.cs

    using SQLite;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;

    using Xamarin.Forms;

    namespace ABM.Views
    {
    public class NuevoCliente : ContentPage
    {
            private Entry _nombre_cliente;
            private Entry _direccion_cliente;

            readonly string _dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "myDBddd.db3");
    public NuevoCliente()
    {
                this.Title = "Nuevo Cliente";
                StackLayout stackLayout = new StackLayout();

                _nombre_cliente = new Entry();
                _nombre_cliente.Keyboard = Keyboard.Text;
                _nombre_cliente.Placeholder = "Nombre";
                stackLayout.Children.Add(_nombre_cliente);

                _direccion_cliente = new Entry();
                _direccion_cliente.Keyboard = Keyboard.Text;
                _direccion_cliente.Placeholder = "Dirección";
                stackLayout.Children.Add(_direccion_cliente);

                ToolbarItem BtAgregarCliente = new ToolbarItem
                {
                    IconImageSource = ImageSource.FromFile("btok.png"),
                    Order = ToolbarItemOrder.Primary,
                    Priority = 0
                };
                BtAgregarCliente.Clicked += BtAgregarCliente_Clicked;
                this.ToolbarItems.Add(BtAgregarCliente);

                Content = stackLayout;
            }

            private async void BtAgregarCliente_Clicked(object sender, EventArgs e)
            {
                var db = new SQLiteConnection(_dbPath);
                db.CreateTable<Clientes>();

                var maxPk = db.Table<Clientes>().OrderByDescending(c => c.Id_Cliente).FirstOrDefault();

                Clientes company = new Clientes()
                {
                    Id_Cliente = (maxPk == null ? 1 : maxPk.Id_Cliente + 1),
                    Nombre_Cliente = _nombre_cliente.Text,
                    Direccion_Cliente = _direccion_cliente.Text
                };
                db.Insert(company);
                await DisplayAlert(null, "CLIENTE GUARDADO CON EXITO", "ACEPTAR");
                await Navigation.PopAsync();
            }

        }
    }


    Sabtu, 24 Agustus 2019 14.03