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;
}
分享到:
相关推荐
动态创建Gridview并且设置Gridview的列
Winform 实现TabControl动态创建 选中行右键即可创建,创建完成后将行拖拽到下面即可显示效果
GridView动态创建列头丶自定义多行合并表头
GridView动态添加模板列,有设置,和代码,是学习GridView的好东西。
主要介绍了C#中GridView动态添加列的实现方法,涉及C#中GridView的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
可对学生信息进行查询(动态连接数据库) 可对学生信息进行添加,编辑,选择,修改,删除 解压后即可用vs2005打开网站把我上传的内容添加到上去。 数据库为sql2005,用sa登录,密码为123。我的数据库在App_date里面。...
GridView控件中动态添加模板列
利用override多态原理实现对相似页面的后台代码的抽象,并实现动态GridView动态列数据绑定的Demo,基于VS2010创建,关键代码为MyApprovals.aspx、ToApprovals.aspx
横向滑动菜单gridview+listview 实现了动态生成横向菜单,添加监听器,并且根据点击创建不同的listview
√(vs200555) 61. GridView使用技巧一√(vs200556) 62. GridView使用技巧二√(vs200557) 63. DetailsView√(vs200558) 64. FormView√(vs200559) 65. MasterPage [母版页]创建√(vs200560)...
ActivityGroup + GridView + ViewFlipper 实现选项卡,详细介绍了如何在Android应用中使用ActivityGroup、GridView和ViewFlipper组件来实现动态选项卡(Tab)功能。通过结合这三个强大的UI组件,开发者可以创建出...
本文实例讲述了Android实现GridView中ImageView动态变换的方法。分享给大家供大家参考。具体如下: 使用YY影音的时候,发现点击GridView的某一个Item,Item里面的图标会在按下的时候发生变换,变成另外一个图片。 ...
√(vs200555) 61. GridView使用技巧一√(vs200556) 62. GridView使用技巧二√(vs200557) 63. DetailsView√(vs200558) 64. FormView√(vs200559) 65. MasterPage [母版页]创建√(vs200560)...
接着上文Asp.net TextBox的TextChanged事件你真的清楚吗?这里我们来说说状态数据时如何加载的,需要的朋友可以参考下
#ngGridView ngGridView是AngularJs指令,可基于JSON数据创建动态表。 想看到一个完整的工作示例吗? 点击#用法##基本结构 <!doctype html >< html ng-app =' gvApp ' > < head > < link href =...
实例210 在GridView控件中动态添加模板列 331 实例211 带上下箭头排序并实现查询数据为 空显示表头 334 实例212 GridView自动求和及合并多列多行 单元格 336 实例213 GridView合并行或列单元格的5种 通用方式 338 ...
运行时存储过程处理(获取输入值,返回GridView / Excel文件)
26.采取独立提供程序的方法执行动态查询 27.异步执行命令概述(这个暂时没有弄懂,需要一些时间搞懂) 28.多活动结果集(MARS,解释为在单个连接上执行多个查询工作,而不是重复的开关数据库的连接,这个在查询多个数据的...