後台動態生成GridView列和模版

2022-07-03 03:45:16 字數 2500 閱讀 3715

考慮到很多資料來源是不確定的,所以這時無法在前台設定gridview的表頭,需要在後台動態指定並繫結資料。

前台**如下:

複製**

<%@ page title="主頁" language="c#" masterpagefile="~/site.master" autoeventwireup="true"

codefile="default.aspx.cs" inherits="_default" %>

複製**

.cs頁面**如下

複製**

public partial class _default : system.web.ui.page

/// 繫結gridview

///

public void binddata()

/// /// 繫結生成gridview

///

/// 要繫結的gridview

/// gridview的資料來源

/// gridview的datakeynames

public static void gridviewbind(gridview gdv, datatable dtbldatasource, string strdatakey)

; for (int i = 0; i < dtbldatasource.columns.count; i++) //繫結普通資料列

//新增編輯列

commandfield cf = new commandfield();//命令字段

cf.buttontype = buttontype.link;//超連結樣式的按鈕

cf.showeditbutton = true;//顯示編輯按鈕

cf.causesvalidation = false;//引發資料驗證為false

cf.headertext = "編輯";

cf.itemstyle.horizontalalign = horizontalalign.center;

gdv.columns.add(cf);//新增編輯按鈕到gridview

//新增刪除列

commandfield cf2 = new commandfield();

cf2.buttontype = buttontype.link;

cf2.showdeletebutton = true;//顯示刪除按鈕

cf2.causesvalidation = false;

cf2.headertext = "刪除";

cf2.itemstyle.horizontalalign = horizontalalign.center;

gdv.columns.add(cf2);

//新增包核取方塊的模板列

templatefield tf = new templatefield();

tf.itemtemplate = new mytemplate("", datacontrolrowtype.datarow);

= "選擇";

tf.headertemplate = new mytemplate("模版列-選擇框", datacontrolrowtype.header);

tf.itemstyle.horizontalalign = horizontalalign.center;

gdv.columns.add(tf);

gdv.databind();//繫結

}//刪除gridview的行

void gridview1_rowdeleting(object sender, gridviewdeleteeventargs e)

//編輯行

public void gridview1_rowediting(object sender, gridviewediteventargs e)

//取消

protected void gridview1_rowcancelingedit(object sender, gridviewcancelediteventargs e)

}

複製**

其中,新增模版的mytemplate類**為:

複製**

public class mytemplate : itemplate

/// /// 動態新增模版列

///

/// 列名

/// 列的型別

public mytemplate(string strcolumnname, datacontrolrowtype dcrtcolumntype)

public void instantiatein(control ctlcontainer)

}}複製**

在mytemplate類中,這裡是直接寫了新增checkbox,其實我們可以在mytemplate的建構函式裡新增乙個引數,表示傳進來的要在模版裡面新增的控制項的型別。這樣就可以根據

控制項型別來自動生成控制項了,而不要在類裡面去手動寫需要生成的控制項。

其中效果圖如下:

GridView動態生成列方法

這是乙個根據不同的資料來源而動態生成gridview顯示資料 繫結生成gridview 要繫結的gridview gridview的資料來源 gridview的datakeynames public static void gridviewbind gridview gv,datatable sou...

C 動態生成GridView的列

想實現這樣的功能嗎?在程式執行中使gridview動態生成列,而並不是將列固定寫死在gridview上 寫個繫結grideview的方法 繫結生成gridview 要繫結的gridview gridview的資料來源 gridview的datakeynames public static void ...

GridView後台新增模板列

1 定義實現itemplate介面的類 public class gridviewtemplate itemplate 定義實現介面itemplate的類 public void instantiatein system.web.ui.control container 分別建立頭行和下面行 voi...