動態建立gridview

2021-08-31 05:34:24 字數 2598 閱讀 6796

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...