DataGridViewExtensions.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Linq;
  5. using System.Reflection;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows.Forms;
  9. namespace PTMedicalInsurance.Common
  10. {
  11. public static class DataGridViewExtensions
  12. {
  13. public static void Bind<T>(DataGridView dataGridView, IEnumerable<T> dataSource)
  14. {
  15. dataGridView.AutoGenerateColumns = false;
  16. // 清空原有的列
  17. dataGridView.Columns.Clear();
  18. var properties = typeof(T).GetProperties();
  19. foreach (var property in properties)
  20. {
  21. // 获取属性上的显示名称(注释)
  22. var displayNameAttribute = property.GetCustomAttribute<DisplayNameAttribute>();
  23. string columnName = displayNameAttribute != null ? displayNameAttribute.DisplayName : property.Name;
  24. // 创建一个新的DataGridViewTextBoxColumn并设置HeaderText和DataPropertyName
  25. var column = new DataGridViewTextBoxColumn()
  26. {
  27. HeaderText = columnName,
  28. DataPropertyName = property.Name
  29. };
  30. // 将新列添加到DataGridView中
  31. dataGridView.Columns.Add(column);
  32. }
  33. // 设置数据源并刷新DataGridView
  34. dataGridView.DataSource = dataSource.ToList();
  35. }
  36. public static string getProperty<T>(string key)
  37. {
  38. var properties = typeof(T).GetProperties();
  39. string pName = null;
  40. foreach (var property in properties)
  41. {
  42. // 获取属性上的显示名称(注释)
  43. var displayNameAttribute = property.GetCustomAttribute<DisplayNameAttribute>();
  44. pName = displayNameAttribute != null ? displayNameAttribute.DisplayName : property.Name;
  45. if (key == pName)
  46. {
  47. // 返回属性名
  48. pName = property.Name;
  49. break;
  50. }
  51. }
  52. return pName;
  53. }
  54. }
  55. }