none
Synchronisation BDD/localStore

    Discussion générale

  • Bonjour,

    J'ai créé un bouton permettant de voir des alertes avec le nombre des alertes non vu en notification dans une bulle sur le bouton.

    voici mon code:

    private Button buttonAlertMAt; private TextView textNotif; private IMobileServiceSyncTable<AlertMateriel> AlertMaterielTable; const string applicationURL = @"https://..."; const string applicationKey = @"key"; const string localDbFilename = "localstore.db"; protected async override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.Layout_menucdt); CurrentPlatform.Init(); client = new MobileServiceClient(applicationURL); await InitLocalStoreAsync(); AlertMaterielTable = client.GetSyncTable<AlertMateriel>(); buttonAlertMAt = FindViewById<Button>(Resource.Id.AlertMAt); textNotif = FindViewById<TextView>(Resource.Id.textOne); await SyncAsync(pullData: true); int compteAlert = 0; var listalert = await AlertMaterielTable.ToListAsync(); foreach (AlertMateriel item in listalert) { if(item.IdReceveur == Intent.GetStringExtra("IdUser") && item.VU ==false) { Toast.MakeText(this, item.IdReceveur, ToastLength.Long).Show(); compteAlert += 1; } } if (compteAlert == 0) { textNotif.Visibility = ViewStates.Gone; } else { textNotif.Text = compteAlert.ToString(); } buttonAlertMAt.Click += delegate { Intent m = new Intent(this, typeof(AlertMatView)); m.AddFlags(ActivityFlags.ClearTop); Bundle bundle = new Bundle(); // envoyer Id et pas le nom bundle.PutString("IdUser", Intent.GetStringExtra("IdUser")); m.PutExtras(bundle); StartActivity(m); }; } private async Task InitLocalStoreAsync() { // new code to initialize the SQLite store string path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), localDbFilename); if (!File.Exists(path)) { File.Create(path).Dispose(); } var store = new MobileServiceSQLiteStore(path); store.DefineTable<AlertMateriel>(); // Uses the default conflict handler, which fails on conflict // To use a different conflict handler, pass a parameter to InitializeAsync. For more details, see http://go.microsoft.com/fwlink/?LinkId=521416 AlertMaterielTable = client.GetSyncTable<AlertMateriel>(); await client.SyncContext.InitializeAsync(store); } private async Task SyncAsync(bool pullData = false) { string errorString = null; try { await client.SyncContext.PushAsync(); await AlertMaterielTable.PullAsync("allAlert", AlertMaterielTable.CreateQuery()); // query ID is used for incremental sync } catch (MobileServicePushFailedException e) { errorString = "Echec de l'opération dû à " + e.PushResult.Errors.Count + " erreurs, message : " + e.Message; } catch (Java.Net.MalformedURLException) { CreateAndShowDialog(new Exception("There was an error creating the Mobile Service. Verify the URL"), "Error"); } catch (Exception e) { CreateAndShowDialog(e, "Error"); } } } }

    La mise à jour s'effectue du localStore vers la bdd mais  si je modifie la bdd, le local store ne se met pas à jour ...

    Vous auriez une solution ?

    Merci d'avance.

    vendredi 5 mai 2017 07:14

Toutes les réponses

  • Bonjour SQUIN,
    Obtenez-vous un message d'erreur?

    Cordialement,
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 5 mai 2017 14:15
    Modérateur
  • Bonjour Nina,

    Non j'ai aucun message d'erreur...

    mardi 9 mai 2017 07:06