Ejemplo n.º 1
0
 /// <summary>
 /// コントロールのマッピングが検証された後に発生します。
 /// </summary>
 /// <param name="sender">実行発生オブジェクト。</param>
 /// <param name="e">ControlMappedEventArgs オブジェクト。</param>
 protected virtual void OnControlMapped(object sender, ControlMappedEventArgs e)
 {
     ControlMapped?.Invoke(sender, e);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 選択されたアイテムの内容を、指定されたコントロールへマッピングを行います。
        /// </summary>
        /// <param name="fieldTextMaps">FieldControlMap オブジェクト。</param>
        /// <param name="item">選択されたアイテムオブジェクト。</param>
        public void Map(FieldControlMapBase[] fieldTextMaps, object item)
        {
            if (item == null)
            {
                foreach (var m in fieldTextMaps)
                {
                    var tree = CreateFieldItemTree(m.FieldName);

                    var mappingEa = new ControlMappingEventArgs(m.Control, m.FieldName, null);
                    ControlMapping?.Invoke(this, mappingEa);
                    if (mappingEa.Cancel)
                    {
                        continue;
                    }

                    MapToControl(m.Control, null);

                    var mappedEa = new ControlMappedEventArgs(m.Control, m.FieldName, null);
                    ControlMapped?.Invoke(this, mappedEa);
                }
                return;
            }

            // SelectedItem が DataRowの場合
            var row = item as DataRow;

            if (row != null)
            {
                foreach (var m in fieldTextMaps)
                {
                    if (!row.Table.Columns.Contains(m.FieldName))
                    {
                        throw new ArgumentException("指定されたプロパティは無効です。:" + m.FieldName);
                    }

                    var value = row[m.FieldName];

                    var mappingEa = new ControlMappingEventArgs(m.Control, m.FieldName, value);
                    ControlMapping?.Invoke(this, mappingEa);
                    if (mappingEa.Cancel)
                    {
                        continue;
                    }

                    MapToControl(m.Control, value);

                    var mappedEa = new ControlMappedEventArgs(m.Control, m.FieldName, value);
                    ControlMapped?.Invoke(this, mappedEa);
                }
                return;
            }

            // SelectedItem が DataRow 以外の objectの場合
            foreach (var m in fieldTextMaps)
            {
                var tree  = CreateFieldItemTree(m.FieldName);
                var value = GetTargetValue(tree, item);

                var mappingEa = new ControlMappingEventArgs(m.Control, m.FieldName, value);
                ControlMapping?.Invoke(this, mappingEa);
                if (mappingEa.Cancel)
                {
                    continue;
                }

                MapToControl(m.Control, value);

                var mappedEa = new ControlMappedEventArgs(m.Control, m.FieldName, value);
                ControlMapped?.Invoke(this, mappedEa);
            }
        }