在后代碼里創建DataGrid控件
2024-07-21 02:23:05
供稿:網友
 
在后代碼里創建datagrid控件 
本文介紹如何用代碼創建datagrid,并且有四個綁定列和一個模板列,支持排序功能。
代碼如下:
c#
createdatagrid.aspx
<%@ page language="c#" enableviewstate = "false"codebehind="createdatagrid.aspx.cs"
 autoeventwireup="true" inherits="aspxwebcs.mydatagrid" %>
<script runat="server">
public void page_load(object sender,eventargs e){
 createdatagridform.controls.add(makegrid());
}
</script>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html>
 <head>
 <title>用代碼創建datagrid</title>
 <meta name="generator" content="microsoft visual studio 7.0">
 <meta name="code_language" content="c#">
 <meta name="vs_defaultclientscript" content="javascript">
 <meta name="vs_targetschema" content="http://schemas.microsoft.com/intellisense/ie5">
 </head>
 <body ms_positioning="gridlayout">
 <form id="createdatagridform" method="post" runat="server">
 <div align="center"><b>用代碼創建datagrid</b></div>
 </form>
 </body>
</html>
createdatagrid.aspx.cs
 using system;
 using system.configuration;
 using system.data;
 using system.data.sqlclient;
 using system.web;
 using system.web.ui;
 using system.web.ui.webcontrols;
 using system.web.ui.htmlcontrols;
 using system.drawing;
/// <summary>
/// createdatagrid 的摘要說明。
/// </summary>
 namespace aspxwebcs
 {
 public class mydatagrid : page
 {
 public string sql = "select firstname,lastname,homephone,title from employees";
 public datagrid mygrid = new datagrid();
 public string sortexpression;
/// <summary>
/// 創建一個模板列和一個列模板
/// </summary>
 public templatecolumn tm = new templatecolumn();
 public columntemplate mycol = new columntemplate();
 //返回dataview
 public dataview createdatasource ()
 {
 string strsql;
 strsql = "data source=.;initial catalog=northwind;user id=sa;password=;";
 sqlconnection conn = new sqlconnection(strsql);
 sqldataadapter db_sqladaptor = new sqldataadapter(sql,conn);
 dataset ds = new dataset();
 db_sqladaptor.fill(ds,"employees");
 dataview myview = ds.tables["employees"].defaultview;
 //myview.sort=sortexpression;
 //response.write(sql);
 return myview;
 }
 /// <summary>
 /// 處理排序
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 public void sort_grid(object sender, datagridsortcommandeventargs e)
 {
 sortexpression = e.sortexpression.tostring();
 session["sortfield"]=sortexpression.trim();
 if(session["order"]==null) session["order"] = "asc";
 session["order"] = (session["order"].tostring()=="desc")?"asc":"desc";
 if(session["sortfield"]==null) session["sortfield"] = "firstname";
 sql += " order by "+session["sortfield"].tostring() + " " + session["order"].tostring();
 mygrid.datasource = createdatasource();
 mygrid.databind();
 }
 /// <summary>
 /// 創建和設置datagrid屬性,這里的屬性設置為固定值,但也可以動態設置
 /// </summary>
 /// <returns></returns>
 public datagrid makegrid()
 {
 mygrid.cellpadding=2;
 mygrid.attributes.add("align","center");
 mygrid.cellspacing=0;
 mygrid.width=500;
 mygrid.borderwidth=1;
 mygrid.bordercolor=colortranslator.fromhtml("black");
 mygrid.autogeneratecolumns=false;
 mygrid.forecolor=colortranslator.fromhtml("black");
 mygrid.font.size=9;
 mygrid.font.name="宋體";
 mygrid.allowsorting=true;
 ///sort命令的事件處理器
 mygrid.sortcommand += new datagridsortcommandeventhandler(sort_grid);
 ///設置headerstyle
 mygrid.headerstyle.backcolor=colortranslator.fromhtml("gold");
 mygrid.headerstyle.forecolor=colortranslator.fromhtml("black");
 mygrid.headerstyle.font.name="宋體";
 mygrid.headerstyle.font.size=9;
 mygrid.headerstyle.font.bold=true;
 mygrid.headerstyle.horizontalalign=horizontalalign.center;
 ///設置alternating style
 mygrid.alternatingitemstyle.backcolor=colortranslator.fromhtml("silver");
 mygrid.alternatingitemstyle.forecolor=colortranslator.fromhtml("black");
 ///設置itemstyle
 mygrid.itemstyle.horizontalalign=horizontalalign.left;
 ///創建綁定列和屬性
 boundcolumn firstname = new boundcolumn();
 boundcolumn lastname = new boundcolumn();
 boundcolumn homephone = new boundcolumn();
 boundcolumn title = new boundcolumn();
 firstname.headertext="名字";
 firstname.datafield="firstname";
 firstname.sortexpression="firstname";
 lastname.headertext="姓";
 lastname.datafield="lastname";
 lastname.sortexpression="lastname";
 homephone.headertext="電話";
 homephone.datafield="homephone";
 homephone.sortexpression="homephone";
 title.headertext="職務";
 title.datafield="title";
 title.sortexpression="title";
 mygrid.columns.addat(0, firstname);
 mygrid.columns.addat(1, lastname);
 mygrid.columns.addat(2, homephone);
 mygrid.columns.addat(3, title);
 ///設置模板列屬性和itemstyle模板
 tm.headertext="**刪除信息**";
 tm.headerstyle.horizontalalign=horizontalalign.center;
 tm.itemstyle.backcolor = colortranslator.fromhtml("#fff778");
 tm.itemstyle.horizontalalign=horizontalalign.center;
 ///創建列模板。
 ///列模板從itemplate繼承
 tm.itemtemplate = mycol;
 mygrid.columns.addat(4, tm);
 ///綁定和返回
 mygrid.datasource = createdatasource();
 mygrid.databind();
 return mygrid;
 }
 }
 /// columntemplate 從itemplate繼承。
 /// "instantiatein"定義子控件的屬于誰
 public class columntemplate : itemplate
 {
 public void instantiatein(control container)
 {
 label mylabel = new label();
 mylabel.text="點擊刪除";
 checkbox mycheckbox = new checkbox();
 container.controls.add(mylabel);
 container.controls.add(mycheckbox);
 }
 }
 }