Example #1
0
 /// <summary>
 /// 单选
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void OnSingleClick(object sender, ItemClickArgs e)
 {
     if (e.Data is Row srcRow)
     {
         _owner.Value = srcRow["name"];
         if (_srcIDs != null)
         {
             // 同步填充
             object tgtObj = _owner.Owner.Data;
             Row    tgtRow = tgtObj as Row;
             for (int i = 0; i < _srcIDs.Length; i++)
             {
                 string srcID = _srcIDs[i];
                 string tgtID = _tgtIDs[i];
                 if (srcRow.Contains(srcID))
                 {
                     if (tgtRow != null)
                     {
                         if (tgtRow.Contains(tgtID))
                         {
                             tgtRow[tgtID] = srcRow[srcID];
                         }
                     }
                     else
                     {
                         var pi = tgtObj.GetType().GetProperty(tgtID, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
                         if (pi != null)
                         {
                             pi.SetValue(tgtObj, srcRow[srcID]);
                         }
                     }
                 }
             }
         }
     }
     else
     {
         _owner.Value = e.Data;
         if (_srcIDs != null)
         {
             // 同步填充
             object tgtObj = _owner.Owner.Data;
             Row    tgtRow = tgtObj as Row;
             for (int i = 0; i < _srcIDs.Length; i++)
             {
                 var srcPi = e.Data.GetType().GetProperty(_srcIDs[i], BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
                 if (srcPi != null)
                 {
                     string tgtID = _tgtIDs[i];
                     if (tgtRow != null)
                     {
                         if (tgtRow.Contains(tgtID))
                         {
                             tgtRow[tgtID] = srcPi.GetValue(e.Data);
                         }
                     }
                     else
                     {
                         var tgtPi = tgtObj.GetType().GetProperty(tgtID, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
                         if (tgtPi != null)
                         {
                             tgtPi.SetValue(tgtObj, srcPi.GetValue(e.Data));
                         }
                     }
                 }
             }
         }
     }
     Close();
     _owner.OnSelected(e.Data);
 }