<!--
.lineBorderBlue1
{
BORDER-TOP: #999999 1px groove;
BORDER-BOTTOM: #999999 1px groove;
BORDER-LEFT: #999999 1px groove;
BORDER-RIGHT: #999999 1px groove;
background-color:#efefef;
}
--> 本例用代码实现了创建DataGrid并响应了CheckBox事件,并实现了超链接列的多变量传送。
创建一个前台页面
CreateDataGrid.aspx:
在Form中添加一个PlcaeHolder,ID为"ph",Runat="Server"
后台页面
CreateDatagrid.aspx.cs
publicclassCreateDataGrid:System.Web.UI.Page
 ...{
publicStringsql="SelectFirstName,LastName,HomePhone,TitleFROMEmployees";
publicDataGridmygrid=newDataGrid();
protectedSystem.Web.UI.WebControls.PlaceHolderph;
publicStringSortExpression;
privatevoidPage_Load(objectsender,System.EventArgse)
 ...{
//CreateDataGridForm.Controls.Add(MakeGrid());

this.ph.Controls.Add(MakeGrid());
}
//protectedoverridevoidCreateChildControls()
//{

//base.CreateChildControls();
//}

 Web窗体设计器生成的代码#regionWeb窗体设计器生成的代码
overrideprotectedvoidOnInit(EventArgse)
 ...{
//
//CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

 /**////<summary>
///设计器支持所需的方法-不要使用代码编辑器修改
///此方法的内容。
///</summary>
privatevoidInitializeComponent()
 ...{
this.Load+=newSystem.EventHandler(this.Page_Load);

}
#endregion
 /**////<summary>
///创建一个模板列和一个列模板
///</summary>

publicTemplateColumntm=newTemplateColumn();
publicColumnTemplatemycol=newColumnTemplate();

//返回DataView
publicDataViewCreateDataSource()
 ...{
stringstrSql;
strSql="DataSource=localhost;InitialCatalog=Northwind;UserId=sa;Password=sa;";
SqlConnectionconn=newSqlConnection(strSql);
SqlDataAdapterdb_sqladaptor=newSqlDataAdapter(sql,conn);
DataSetds=newDataSet();
db_sqladaptor.Fill(ds,"Employees");
DataViewmyView=ds.Tables["Employees"].DefaultView;
//myView.Sort=SortExpression;
//Response.Write(sql);
returnmyView;
}

 /**////<summary>
///处理排序
///</summary>
///<paramname="sender"></param>
///<paramname="e"></param>
publicvoidSort_Grid(Objectsender,DataGridSortCommandEventArgse)
 ...{
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+="ORDERBY"+Session["SortField"].ToString()+""+Session["Order"].ToString();
mygrid.DataSource=CreateDataSource();
mygrid.DataBind();
}
 /**////<summary>
///创建和设置DataGrid属性,这里的属性设置为固定值,但也可以动态设置
///</summary>
///<returns></returns>

publicDataGridMakeGrid()
 ...{
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+=newDataGridSortCommandEventHandler(Sort_Grid);
mygrid.ItemDataBound+=newDataGridItemEventHandler(mygrid_ItemDataBound);

 /**////设置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;

 /**////设置alternatingstyle
mygrid.AlternatingItemStyle.BackColor=ColorTranslator.FromHtml("Silver");
mygrid.AlternatingItemStyle.ForeColor=ColorTranslator.FromHtml("Black");

 /**////设置itemstyle
mygrid.ItemStyle.HorizontalAlign=HorizontalAlign.Left;

 /**////创建绑定列和属性

HyperLinkColumnFirstName=newHyperLinkColumn();
BoundColumnLastName=newBoundColumn();
BoundColumnHomePhone=newBoundColumn();
BoundColumnTitle=newBoundColumn();

//FirstName.HeaderText="名字";
//FirstName.DataField="FirstName";
//FirstName.SortExpression="FirstName";

FirstName.HeaderText="名字";

FirstName.DataTextField="FirstName";
FirstName.SortExpression="FirstName";
FirstName.NavigateUrl="http://localhost/test.aspx";

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;


TemplateColumnaa=newTemplateColumn();
ColumnTemplate1tt=newColumnTemplate1();
aa.ItemTemplate=tt;


 /**////创建列模板。
///列模板从ITemplate继承
tm.ItemTemplate=mycol;
mygrid.Columns.AddAt(4,tm);
mygrid.Columns.AddAt(5,aa);

 /**////绑定和返回
mygrid.DataSource=CreateDataSource();
mygrid.DataBind();
returnmygrid;
}

privatevoidmygrid_ItemDataBound(objectsender,DataGridItemEventArgse)
 ...{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
 ...{
HyperLinklink=(HyperLink)e.Item.Cells[0].Controls[0];
stringurl=link.NavigateUrl;
//实现多参数链接
url+="?id="+e.Item.Cells[1].Text+"&id2="+e.Item.Cells[2].Text;
link.NavigateUrl=url;
}
}
}

|
|
再添加关键的几段
 /**////ColumnTemplate从ITemplate继承。
///"InstantiateIn"定义子控件的属于谁
publicclassColumnTemplate:ITemplate
 ...{

publicvoidInstantiateIn(Controlcontainer)
 ...{
LabelmyLabel=newLabel();
myLabel.Text="点击删除";
CheckBoxmycheckbox=newCheckBox();
container.Controls.Add(myLabel);
container.Controls.Add(mycheckbox);
}

}
|
添加CheckBox事件:
publicclassColumnTemplate1:ITemplate
 ...{

publicvoidInstantiateIn(Controlcontainer)
 ...{
LabelmyLabel=newLabel();
myLabel.Text="test";
CheckBoxlnk=newCheckBox();
lnk.AutoPostBack=true;
lnk.CheckedChanged+=newEventHandler(lnk_CheckedChanged);
container.Controls.Add(myLabel);
container.Controls.Add(lnk);
}


privatevoidlnk_CheckedChanged(objectsender,EventArgse)
 ...{
CheckBoxlnk=(CheckBox)sender;
DataGriddg=(DataGrid)lnk.NamingContainer.NamingContainer;
if(dg==null)return;
//实现CheckBox事件响应
DataGridItemdi=(DataGridItem)lnk.NamingContainer;
HyperLinklnkID=(HyperLink)di.Cells[0].Controls[0];
strings2=lnkID.Text.Trim()+lnk.ID+"被选中了!";
}
}
|