asp.net 中gridview還是挺好用的,尤其格式的設定對我們這種不會css的人來說很合適。但是有時候需要動態的建立column,而且datasource也需要編輯。下面舉例**
1. 動態新增column,column為多個日期
///
/// 介面增加列
///
///
/// true為按周,false為按天
///
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
///
/// 獲取資料
///
/// 開始日期
/// 結束日期
/// true為按周,false為按天
///
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的構架,但是裡面是沒有任何資料的
listpnameswithdata = db.getprductlinewithdata(); //getprductlinewithdata函式訪問資料庫獲取產品線
foreach (string pname in pnameswithdata)
datarow dr = dt.newrow();
dr["產品線"] = pname;
dictionarypdata = 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("kb", size / 1024.0);
else if (size < 1024 * 1024 * 1024)
dr[strdate] = string.format("mb", size / (1024.0 * 1024));
else
dr[strdate] = string.format("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控制項建立列
這個動態新增的列 上圖紅色方框 會放置乙個銨鈕imagebutton。可以寫乙個列類別,實作在命名空間system.web.ui下的itemplate介面,在runtime時new 這個列類別即可。下面是detailcolumn類別,重點部分已經有注釋 using system using syst...
動態為GridView控制項建立列
這個動態新增的列 上圖紅色方框 會放置乙個銨鈕imagebutton。可以寫乙個列類別,實作在命名空間system.web.ui下的itemplate介面,在runtime時new 這個列類別即可。下面是detailcolumn類別,重點部分已經有注釋 using system using syst...
動態為GridView控制項建立列
這個動態新增的列 上圖紅色方框 會放置乙個銨鈕imagebutton。可以寫乙個列類別,實作在命名空間system.web.ui下的itemplate介面,在runtime時new 這個列類別即可。下面是detailcolumn類別,重點部分已經有注釋 detailcolumn using syst...