1. 程式人生 > 其它 >C# Winform 下 DataGridView 行轉 模型 Model

C# Winform 下 DataGridView 行轉 模型 Model

  /// <summary>
        /// DataRow 轉 Model 
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="row"></param>
        /// <returns></returns>
        public static IList<T> DataGridViewSelectedRowsToModel<T>( DataGridView dgv)
        {

            IList
<T> list = null; if (dgv != null) { list = new List<T>(); T obj = default(T); obj = Activator.CreateInstance<T>(); foreach (DataGridViewColumn dgvc in dgv.Columns) { PropertyInfo prop
= obj.GetType().GetProperty(dgvc.DataPropertyName); if (prop == null) { continue; } foreach (DataGridViewRow dgvr in dgv.SelectedRows) { var dgvrModel = dgvr.Cells[dgvc.Name].Value; object value = (dgvrModel.GetType() == typeof
(DBNull)) ? null : dgvrModel; //非泛型 if (!prop.PropertyType.IsGenericType) value = string.IsNullOrEmpty(value + "") ? null : Convert.ChangeType(value, prop.PropertyType); else//泛型 { Type genericTypeDefinition = prop.PropertyType.GetGenericTypeDefinition(); if (genericTypeDefinition == typeof(Nullable<>)) { value = string.IsNullOrEmpty(value + "") ? null : Convert.ChangeType(value, Nullable.GetUnderlyingType(prop.PropertyType)); } } if (prop.CanWrite) //判斷其是否可寫 prop.SetValue(obj, value, null); } } list.Add(obj); } return list; }