`
happmaoo
  • 浏览: 4333827 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

动态创建gridview

阅读更多

asp.net 中gridview还是挺好用的,尤其格式的设置对我们这种不会css的人来说很合适。但是有时候需要动态的创建column,而且datasource也需要编辑。下面举例代码

1. 动态添加column,column为多个日期

/// <summary>

/// 界面增加列

/// </summary>

/// <param name="start"></param>

/// <param name="bWeeklyOrDaily">true为按周,false为按天</param>

/// <param name="end"></param>

protected void BindData(DateTime start, DateTime end, bool bWeeklyOrDaily)

{

if (bWeeklyOrDaily)

{

start = start.AddDays((int)start.DayOfWeek * (-1) + 1);

end = end.AddDays((int)end.DayOfWeek * (-1) + 1);

}

for (DateTime t = start; t <= end; t = t.AddDays(bWeeklyOrDaily ? 7 : 1))

{

BoundField bfd = new BoundField();

bfd.DataField = bfd.HeaderText = t.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo);

this.GridViewProduct.Columns.Add(bfd);

}

this.GridViewProduct.DataSource = GetDataTable(start,end, bWeeklyOrDaily);

this.GridViewProduct.DataBind();

}

2. 动态创建dataset

/// <summary>

/// 获取数据

/// </summary>

/// <param name="start">开始日期</param>

/// <param name="end">结束日期</param>

/// <param name="bWeeklyOrDaily">true为按周,false为按天</param>

/// <returns></returns>

DataSet GetDataTable(DateTime start, DateTime end, bool bWeeklyOrDaily)

{

DataSet ds = new DataSet();

DataTable dt = new DataTable("productData");

DataColumn dc1 = new DataColumn("产品线", Type.GetType("System.String"));

dt.Columns.Add(dc1);

for (DateTime t = start; t <= end; t = t.AddDays(bWeeklyOrDaily ? 7 : 1))

{

DataColumn dc = new DataColumn(t.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo), Type.GetType("System.String"));

dt.Columns.Add(dc);

}

//以上代码完成了DataTable的构架,但是里面是没有任何数据的

List<string> pNamesWithData = DB.GetPrductLineWithData(); //GetPrductLineWithData函数访问数据库获取产品线

foreach (string pname in pNamesWithData)

{

DataRow dr = dt.NewRow();

dr["产品线"] = pname;

Dictionary<string, string> pData = DB.GetProductLineDataSize(pname,start);//GetProductLineDataSize函数

for (DateTime t = start; t <= end; t = t.AddDays(bWeeklyOrDaily?7:1))

{

string strDate = t.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo);

if (pData.ContainsKey(strDate))

{

long size;

if (long.TryParse(pData[strDate], out size))

{

if (size < 1024)

dr[strDate] = size + "B";

else if (size < 1024 * 1024)

dr[strDate] = string.Format("{0:.00}KB", size / 1024.0);

else if (size < 1024 * 1024 * 1024)

dr[strDate] = string.Format("{0:.00}MB", size / (1024.0 * 1024));

else

dr[strDate] = string.Format("{0:.000}GB", size / (1024.0 * 1024 * 1024));

}

else

{

dr[strDate] = pData[strDate] + "B";

}

}

else

dr[strDate] = "没记录";

}

dt.Rows.Add(dr);

}

ds.Tables.Add(dt);

return ds;

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics