GridView是ASP.NET中非常方便好用的一个数据控件,一般的使用是直接用LinqDataSource或SqlDataSource进行数据绑定,然后在GridView中修改列的属性与样式,如果数据源固定只有一个GridView可以所见即所得地显示最后样式,但如果一个GridView绑定多个数据源的话就不那么容易。
此文示范如何自定义GridView的列样式,不使用***DataSource控件而直接将List<T>类型的数据绑定至GridView上,List<T>数据在代码层面可以更方便进行操作获取。
<T>数据类:
- /// <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();
如此,一个GridView可以绑定显示多个不同结构的List<T>数据源。