GridViewカスタムデータのバインドと表示


GridViewはASP.NETでは非常に使いやすいデータコントロールで、LinqDataSourceまたはSqlDataSourceで直接データバインドを行い、GridViewで列の属性とスタイルを変更し、データソースが1つしか固定されていない場合は最終スタイルを表示できますが、1つのGridViewが複数のデータソースをバインドすると容易ではありません.
ここでは、***DataSourceコントロールを使用せずにリストタイプのデータをGridViewに直接バインドするGridViewの列スタイルをカスタマイズする方法を示します.リストデータはコードレベルで操作しやすくなります.
データクラス:

  
  
  
  
  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(); 

このように、1つのGridViewは、複数の異なる構造を表示するListデータソースをバインドすることができる.