GridViewカスタムデータのバインドと表示
GridViewはASP.NETでは非常に使いやすいデータコントロールで、LinqDataSourceまたはSqlDataSourceで直接データバインドを行い、GridViewで列の属性とスタイルを変更し、データソースが1つしか固定されていない場合は最終スタイルを表示できますが、1つのGridViewが複数のデータソースをバインドすると容易ではありません.
ここでは、***DataSourceコントロールを使用せずにリストタイプのデータをGridViewに直接バインドするGridViewの列スタイルをカスタマイズする方法を示します.リストデータはコードレベルで操作しやすくなります.
データクラス:
GridViewにデータをバインドするには、次の手順に従います.
このように、1つのGridViewは、複数の異なる構造を表示するListデータソースをバインドすることができる.
ここでは、***DataSourceコントロールを使用せずにリスト
- /// <summary>
- ///
- /// </summary>
- public class UnSubmitExpenseDetailData
- {
- public int Index { get; set; }
- public string UserName { get; set; }
- public DateTime Date { get; set; }
- public string Describe { get; set; }
- public decimal Count { get; set; }
-
- public static string KeyName_Index = "Index";
- public static string KeyName_UserName = "UserName";
- public static string KeyName_Date = "Date";
- public static string KeyName_Describe = "Describe";
- public static string KeyName_Count = "Count";
-
- public UnSubmitExpenseDetailData(int index, string userName, DateTime date, string describe, decimal count)
- {
- this.Index = index;
- this.UserName = userName;
- this.Date = date;
- this.Describe = describe;
- this.Count = count;
- }
- }
GridViewにデータをバインドするには、次の手順に従います.
- // ,List<T>
- this.GridView1.DataSource = (List<MyData>)GetMyData();
- //
- this.GridView1.AllowPaging = true;
-
- //
- this.GridView1.Columns.Clear();
- //
- this.GridView1.AutoGenerateColumns = false;
-
- //
- BoundField f1 = new BoundField();
- f1.DataField = UnSubmitExpenseDetailData.KeyName_Index;
- f1.HeaderText = " ";
- f1.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
- f1.ItemStyle.Width = 80;
- this.GridView1.Columns.Add(f1);
-
- BoundField f2 = new BoundField();
- f2.DataField = UnSubmitExpenseDetailData.KeyName_UserName;
- f2.HeaderText = " ";
- f2.ItemStyle.HorizontalAlign = HorizontalAlign.Left;
- f2.ItemStyle.Width = 120;
- this.GridView1.Columns.Add(f2);
-
- BoundField f3 = new BoundField();
- f3.DataField = UnSubmitExpenseDetailData.KeyName_Date;
- f3.HeaderText = " ";
- f3.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
- f3.ItemStyle.Width = 100;
- f3.DataFormatString = "{0:yyyy-MM-dd}";
- this.GridView1.Columns.Add(f3);
-
- BoundField f4 = new BoundField();
- f4.DataField = UnSubmitExpenseDetailData.KeyName_Describe;
- f4.HeaderText = " ";
- f4.ItemStyle.HorizontalAlign = HorizontalAlign.Left;
- f4.ItemStyle.Width = 150;
- this.GridView1.Columns.Add(f4);
-
- BoundField f5 = new BoundField();
- f5.DataField = UnSubmitExpenseDetailData.KeyName_Count;
- f5.HeaderText = " ";
- f5.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
- f5.ItemStyle.Width = 100;
- f5.DataFormatString = "{0:C}";
- this.GridView1.Columns.Add(f5);
-
- //
- this.GridView1.DataBind();
このように、1つのGridViewは、複数の異なる構造を表示するList