GridView是ASP.NET中非常方便好用的一个数据控件,一般的使用是直接用LinqDataSource或SqlDataSource进行数据绑定,然后在GridView中修改列的属性与样式,如果数据源固定只有一个GridView可以所见即所得地显示最后样式,但如果一个GridView绑定多个数据源的话就不那么容易。

此文示范如何自定义GridView的列样式,不使用***DataSource控件而直接将List<T>类型的数据绑定至GridView上,List<T>数据在代码层面可以更方便进行操作获取。

<T>数据类:

  1. /// <summary>  
  2. /// 个人未报销明细  
  3. /// </summary>  
  4. public class UnSubmitExpenseDetailData  
  5. {  
  6.     public int Index { getset; }  
  7.     public string UserName { getset; }  
  8.     public DateTime Date { getset; }  
  9.     public string Describe { getset; }  
  10.     public decimal Count { getset; }  
  11.  
  12.     public static string KeyName_Index = "Index";  
  13.     public static string KeyName_UserName = "UserName";  
  14.     public static string KeyName_Date = "Date";  
  15.     public static string KeyName_Describe = "Describe";  
  16.     public static string KeyName_Count = "Count";  
  17.  
  18.     public UnSubmitExpenseDetailData(int index, string userName, DateTime date, string describe, decimal count)  
  19.     {  
  20.         this.Index = index;  
  21.         this.UserName = userName;  
  22.         this.Date = date;  
  23.         this.Describe = describe;  
  24.         this.Count = count;  
  25.     }  

将数据绑定至GridView中:

  1.  //获取数据,List<T>类型的数据集  
  2.  this.GridView1.DataSource = (List<MyData>)GetMyData();  
  3.  //允许分页  
  4.  this.GridView1.AllowPaging = true;  
  5.  
  6.  //清除列  
  7.  this.GridView1.Columns.Clear();  
  8. //禁自动生成列  
  9. this.GridView1.AutoGenerateColumns = false;  
  10.  
  11.  //生成新列  
  12.  BoundField f1 = new BoundField();  
  13.  f1.DataField = UnSubmitExpenseDetailData.KeyName_Index;  
  14.  f1.HeaderText = "序号";  
  15.  f1.ItemStyle.HorizontalAlign = HorizontalAlign.Center;  
  16.  f1.ItemStyle.Width = 80;  
  17.  this.GridView1.Columns.Add(f1);  
  18.  
  19.  BoundField f2 = new BoundField();  
  20.  f2.DataField = UnSubmitExpenseDetailData.KeyName_UserName;  
  21.  f2.HeaderText = "用户名称";  
  22.  f2.ItemStyle.HorizontalAlign = HorizontalAlign.Left;  
  23.  f2.ItemStyle.Width = 120;  
  24.  this.GridView1.Columns.Add(f2);  
  25.  
  26.  BoundField f3 = new BoundField();  
  27.  f3.DataField = UnSubmitExpenseDetailData.KeyName_Date;  
  28.  f3.HeaderText = "报销日期";  
  29.  f3.ItemStyle.HorizontalAlign = HorizontalAlign.Center;  
  30.  f3.ItemStyle.Width = 100;  
  31.  f3.DataFormatString = "{0:yyyy-MM-dd}";  
  32.  this.GridView1.Columns.Add(f3);  
  33.  
  34.  BoundField f4 = new BoundField();  
  35.  f4.DataField = UnSubmitExpenseDetailData.KeyName_Describe;  
  36.  f4.HeaderText = "用途";  
  37.  f4.ItemStyle.HorizontalAlign = HorizontalAlign.Left;  
  38.  f4.ItemStyle.Width = 150;  
  39.  this.GridView1.Columns.Add(f4);  
  40.  
  41.  BoundField f5 = new BoundField();  
  42.  f5.DataField = UnSubmitExpenseDetailData.KeyName_Count;  
  43.  f5.HeaderText = "报销金额";  
  44.  f5.ItemStyle.HorizontalAlign = HorizontalAlign.Right;  
  45.  f5.ItemStyle.Width = 100;  
  46.  f5.DataFormatString = "{0:C}";  
  47.  this.GridView1.Columns.Add(f5);  
  48.  
  49.  //数据绑定  
  50.  this.GridView1.DataBind(); 

如此,一个GridView可以绑定显示多个不同结构的List<T>数据源。