Exemplo n.º 1
0
        private void asmx_ClientUpdateIssuesCompleted(object sender, ASMX.UpdateIssuesCompletedEventArgs e)
        {
            Exception ex = new Exception("Async update completed normally", null);

            if (e.Cancelled || (e.Error != null && !String.IsNullOrEmpty(e.Error.Message)))
            {
                ex = new Exception(e.Error.Message, null);
            }
            else
            {
                try
                {
                    ASMX.UpdateIssuesResponse rs = e.Result;
                }
                catch (Exception x)
                {
                    ex = new Exception(x.Message, x.InnerException);
                }
            }

            PrepareDataAfterUpdate();
            ClientUpdateIssuesCompleted(this, new AsyncCompletedEventArgs(ex, e.Cancelled, null));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Client callable code to Delete/Insert/Update Issues
        /// </summary>
        /// <returns>True if update is successful. If False, check for RowErrors.</returns>
        public bool ClientUpdateIssues(bool async)
        {
            PrepareDataBeforeUpdate();

            IssuesCD updatedIssues = new IssuesCD();

            updatedIssues.Merge(Tables["Issues"].Select("", "", DataViewRowState.Deleted), false, MissingSchemaAction.Ignore);
            updatedIssues.Merge(Tables["Issues"].Select("", "", DataViewRowState.Added), false, MissingSchemaAction.Ignore);
            updatedIssues.Merge(Tables["Issues"].Select("", "", DataViewRowState.ModifiedCurrent), false, MissingSchemaAction.Ignore);

            if (updatedIssues.Issues.Rows.Count > 0)
            {
                if (UseWcfService)
                {
                    try
                    {
                        WCF.IssuesContractClient svWCF = new WCF.IssuesContractClient();
                        WCF.UpdateIssuesRequest  rqWCF = new WCF.UpdateIssuesRequest();
                        rqWCF.IssuesCD = new IssuesServiceWCF.IssuesCD();
                        rqWCF.IssuesCD.Merge(updatedIssues, false, MissingSchemaAction.Ignore);

                        if (async)
                        {
                            string ping = svWCF.Ping();
                            if (String.IsNullOrEmpty(ping))
                            {
                                throw new Exception("WCF is offline.");
                            }
                            svWCF.BeginUpdateIssues(rqWCF, wcf_ClientUpdateIssuesCompleted, svWCF);
                            return(true);
                        }
                        else
                        {
                            WCF.UpdateIssuesResponse rsWCF = svWCF.UpdateIssues(rqWCF);
                            Merge(rsWCF.IssuesCD, false, MissingSchemaAction.Ignore);
                            PrepareDataAfterUpdate();
                            return(true);
                        }
                    }
                    catch { UseWcfService = false; }                     // ignore if not responding
                }
                if (UseAsmxService)
                {
                    try
                    {
                        ASMX.IssuesServiceASMX   svASMX = new ASMX.IssuesServiceASMX();
                        ASMX.UpdateIssuesRequest rqASMX = new ASMX.UpdateIssuesRequest();
                        rqASMX.IssuesCD = new IssuesServiceASMX.IssuesCD();
                        rqASMX.IssuesCD.Merge(updatedIssues, false, MissingSchemaAction.Ignore);

                        if (async)
                        {
                            svASMX.UpdateIssuesCompleted += asmx_ClientUpdateIssuesCompleted;
                            svASMX.UpdateIssuesAsync(rqASMX);
                            return(true);
                        }
                        else
                        {
                            ASMX.UpdateIssuesResponse rsASMX = svASMX.UpdateIssues(rqASMX);
                            Merge(rsASMX.IssuesCD, false, MissingSchemaAction.Ignore);
                            PrepareDataAfterUpdate();
                            return(true);
                        }
                    }
                    catch { UseAsmxService = false; }                     // ignore if not responding
                }
                if (UseClientServer)
                {
                    try
                    {
                        Merge(UpdateIssues(updatedIssues), false, MissingSchemaAction.Ignore);
                        PrepareDataAfterUpdate();
                        return(true);
                    }
                    catch { UseClientServer = false; }                     // ignore if not responding
                }
            }

            return(false);
        }