`
wangpengfei360
  • 浏览: 1057205 次
文章分类
社区版块
存档分类
最新评论

用代码创建DataGrid的多链接及checkbox事件响应(downmoon)

 
阅读更多

<!-- .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+"被选中了!"
;
}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics