当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  ASP.NET中Web DataGrid的使用指南(2)

 ASP.NET中Web DataGrid的使用指南(2)

点击次数:22 次 发布日期:2008-11-26 12:29:01 作者:源代码网
源代码网推荐      比如:
源代码网推荐  
源代码网推荐  假设DataGrid的第一列声明如下
源代码网推荐  
源代码网推荐  <asp:HyperLinkColumn DataTextField="au_id" HeaderText="au_id" DataNavigateUrlField="au_id" DataNavigateUrlFormatString="Edit.aspx?id={0}"></asp:HyperLinkColumn>
源代码网推荐  
源代码网推荐  读取的时候可以用:
源代码网推荐  
源代码网推荐  //Items[0]表示第一行,Cells[0]表示第一列,Controls[0]表示Cell中的第一个控件(也只有这个控件可以用)
源代码网推荐  
源代码网推荐  HyperLink link = (HyperLink)DataGrid1.Items[0].Cells[0].Controls[0]);
源代码网推荐  
源代码网推荐  Response.Write(link.Text);
源代码网推荐  
源代码网推荐  至于模板列(TemplateColumn),当然也可以通过DataGrid1.Items.Cells[j].Controls[n]来获取,然后转换成原来的控件类型再操作,但是还有个更好的办法,就是用FindControl来查找控件。
源代码网推荐  
源代码网推荐  FindControl是System.Web.UI.Control的方法,可以根据子控件ID来查找子控件
源代码网推荐  
源代码网推荐  比如:
源代码网推荐  
源代码网推荐  假设DataGrid的某一列声明如下
源代码网推荐  
源代码网推荐  <asp:TemplateColumn>
源代码网推荐  
源代码网推荐  <ItemTemplate>
源代码网推荐  
源代码网推荐  <asp:TextBox Runat="server" ID="txtID" Text=<%# DataBinder.Eval(Container.DataItem,"au_id") %>>
源代码网推荐  
源代码网推荐  </asp:TextBox>
源代码网推荐  
源代码网推荐  </ItemTemplate>
源代码网推荐  
源代码网推荐  </asp:TemplateColumn>
源代码网推荐  
源代码网推荐  读取方法:
源代码网推荐  
源代码网推荐  TextBox txt = (TextBox)DataGrid1.Items[1].FindControl("txtID");
源代码网推荐  
源代码网推荐  Response.Write(txt.Text);
源代码网推荐  
源代码网推荐  注意:DataList中是没有Cell的
源代码网推荐  
源代码网推荐  三、事件
源代码网推荐  
源代码网推荐  1、ItemCommand、CancelCommand、DeleteCommand、EditCommand、UpdateCommand
源代码网推荐  
源代码网推荐  也就是DataGrid中,点击Button、LinkButton后执行的事件,执行的事件取决于按钮的CommandName。其实最主要的一个是ItemCommand,而后面四个都只是ItemCommand的一小部分,
源代码网推荐  
源代码网推荐  比如一个按钮的CommandName为"Cancel",当返回后,首先执行的是ItemCommand事件,然后才是CancelCommand事件。
源代码网推荐  
源代码网推荐  2、PageIndexChanged
源代码网推荐  
源代码网推荐  如果你的DataGrid是分页的,那当你在DataGrid上点击Pager上的1、2、3或者<、>时,就会激发这个事件。
源代码网推荐  
源代码网推荐  在这个事件里面,你可以用e.NewPageIndex来读取要改变的页,然后赋值给DataGrid的CurrentPageIndex属性,最后不要忘了,还要设置DataSource,还要执行DataBind。
源代码网推荐  
源代码网推荐  注意:DataList中没有这个事件,如果需要在DataList中分页,可以一段一段的读取数据,然后把当前段的数据绑定到DataList上。
源代码网推荐  
源代码网推荐  3、ItemDataBound,ItemCreated
源代码网推荐  
源代码网推荐  首先要说的是这两个事件的发生时间。
源代码网推荐  
源代码网推荐  ItemDataBound嘛,只要执行了DataBind方法,就会马上激发这个事件。
源代码网推荐  
源代码网推荐  ItemCreated呢,如果页面是第一次访问(Page.IsPostBack = false),那在第一次执行DataBind的时候,会先激发ItemCreated事件,也就是说,执行了DataBind后,首先会用ItemCreated来建立Header行,然后用ItemDataBound来绑定Header行,再用ItemCreated来建立第一行,再调用ItemDataBound来绑定第一行,也就是说ItemCreated和ItemDataBound是交替执行的。
源代码网推荐  
源代码网推荐  页面返回时,也会执行ItemCreated
源代码网推荐  
源代码网推荐  事件,在Page_Load之前,但是这时候就不会再执行ItemDataBound事件了。
源代码网推荐  
源代码网推荐  所以,如果你想在DataGrid里动态添加什么控件,就需要在ItemCreated事件中,而不是在ItemDataBound事件中。
源代码网推荐  
源代码网推荐  
源代码网推荐  四、代码片断
源代码网推荐  
源代码网推荐  1、DataGrid显示双层表头
源代码网推荐  
源代码网推荐  假设你的DataGrid有三列,现在想将前两列作为"大类1",第三列作为"大类2",现在,你可以在ItemDataBound事件中加入下面的代码:
源代码网推荐  
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华