Ejemplo n.º 1
0
        private void MakeUpdates(IDataSource ds, XmlDocument xml)
        {
            XmlNodeList updatingRecords = xml.SelectNodes("records/Updated/record");

            string id = GetIdColumnName();

            foreach (XmlNode node in updatingRecords)
            {
                record    = node;
                values    = new SortedList(this.Reader.Reader.Fields.Count);
                keys      = new SortedList();
                oldValues = new SortedList();
                foreach (RecordField field in this.Reader.Reader.Fields)
                {
                    XmlNode keyNode = node.SelectSingleNode(field.Name);
                    values[field.Name] = keyNode != null ? keyNode.InnerText : null;
                }

                confirmation = null;
                if (!string.IsNullOrEmpty(id))
                {
                    XmlNode keyNode = node.SelectSingleNode(id);
                    string  idStr   = keyNode != null ? keyNode.InnerText : null;

                    int idInt;
                    if (int.TryParse(idStr, out idInt))
                    {
                        keys[id] = idInt;
                    }
                    else
                    {
                        keys[id] = idStr;
                    }

                    if (this.UseIdConfirmation && keys[id] != null)
                    {
                        confirmation = changingEventArgs.ConfirmationList[keys[id].ToString()];
                    }
                }

                BeforeRecordUpdatedEventArgs eBeforeRecordUpdated = new BeforeRecordUpdatedEventArgs(record, keys, values, oldValues, confirmation);
                this.OnBeforeRecordUpdated(eBeforeRecordUpdated);
                if (eBeforeRecordUpdated.CancelAll)
                {
                    break;
                }
                if (eBeforeRecordUpdated.Cancel)
                {
                    continue;
                }
                if (ds != null)
                {
                    ds.GetView("").Update(keys, values, oldValues, this.UpdateCallback);
                }
                else
                {
                    this.UpdateCallback(0, null);
                }
            }
        }
Ejemplo n.º 2
0
        protected virtual void OnBeforeRecordUpdated(BeforeRecordUpdatedEventArgs e)
        {
            BeforeRecordUpdatedEventHandler handler = (BeforeRecordUpdatedEventHandler)Events[EventBeforeRecordUpdated];

            if (handler != null)
            {
                handler(this, e);
            }
        }