<!--
.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+"被选中了!"; } }
|
本文介绍了一个使用C#创建DataGrid并响应CheckBox事件的例子,同时实现了超链接列的多变量传送功能。通过实例展示了如何设置DataGrid的样式、绑定列、处理排序以及响应CheckBox事件。






}
}
82

被折叠的 条评论
为什么被折叠?



