GridView嵌套GridView,对子GridView及父GridView级联删除的问题
http://blog.csdn.net/amandag/archive/2007/05/31/1633395.aspx
利用GridView显示主细表并添加删除、打开、关闭功能(续)
http://dotnet.aspx.cc/article/f73eeaa9-2bdc-47fd-afd2-59f2fa4897f5/read.aspx
GridView的主从多级嵌套
http://hi.baidu.com/freezesoul/blog/item/4678e6dd90a0c6eb77c63867.html
<!– 第一层GridView开始 –> < asp:GridView ID = “ GridView1 “ OnRowDataBound = “ GridView1_RowDataBound “ AutoGenerateColumns = false runat = “ server “ > < Columns > < asp:TemplateField > < ItemTemplate > <% #Container.DataItem.ToString() %> <!– 第二层GridView开始 –> < asp:GridView ID = “ GridView2 “ OnRowDataBound = “ GridView2_RowDataBound “ AutoGenerateColumns = false runat = “ server “ > < Columns > < asp:TemplateField > < ItemTemplate > <% #Container.DataItem.ToString() %> <!– 第三层GridView开始 –> < asp:GridView ID = “ GridView3 “ AutoGenerateColumns = false runat = server > < Columns > < asp:TemplateField > < ItemTemplate > <% #Container.DataItem.ToString() %> </ ItemTemplate > </ asp:TemplateField > </ Columns > </ asp:GridView > <!– 第三层GridView 结束 –> </ ItemTemplate > </ asp:TemplateField > </ Columns > </ asp:GridView > <!– 第二层GridView结束 –> </ ItemTemplate > </ asp:TemplateField > </ Columns > </ asp:GridView > <!– 第一层GridView结束 –>
.cs代码 RowDataBound与1.x中的ItemDataBound也有一腿!
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Collections;
public partial class _Default : System.Web.UI.Page { protected void Page_Load( object sender, EventArgs e) { this .GridView1.DataSource = Al( “ GridView1Item: “ ); this .GridView1.DataBind(); }
// DataSource protected ArrayList Al( string GetStr) { ArrayList al = new ArrayList(); for ( int i = 0 ;i < 2 ;i ) { al.Add(GetStr i.ToString()); }
return al; }
// GridView1_RowDataBound protected void GridView1_RowDataBound( object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { GridView gv = (GridView)e.Row.FindControl( “ GridView2 “ ); gv.DataSource = Al( “ GridView2Item: “ ); gv.DataBind(); } }
// GridView2_RowDataBound protected void GridView2_RowDataBound( object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { GridView gv = (GridView)e.Row.FindControl( “ GridView3 “ ); gv.DataSource = Al( “ GridView3Item: “ ); gv.DataBind();
} } }
// 绑定 public void bind() { string sqlstr = “ select * from 表 “ ; sqlcon = new SqlConnection(strCon); SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon); DataSet myds = new DataSet(); sqlcon.Open(); myda.Fill(myds, “ 表 “ ); GridView1.DataSource = myds; GridView1.DataKeyNames = new string [] { “ id “ }; // 主键 GridView1.DataBind(); sqlcon.Close(); }
=========================================
我已经通过FindControl找到这个gridview,可是现在的问题是我要给这个gridview里帮定的数据源是个新的,和外面的gridview数据源不是同一个!下面是我的部分代码: < asp:GridView ID = “ GridView1 “ runat = “ server “ AutoGenerateColumns = “ False “ OnRowDataBound = “ GridView1_RowDataBound “ > < Columns > < asp:BoundField DataField = “ type “ HeaderText = “ type “ /> < asp:TemplateField > < ItemTemplate > < asp:GridView ID = “ GridView2 “ runat = “ server “ AutoGenerateColumns = “ False “ EnableViewState = “ False “ > < Columns > < asp:BoundField DataField = “ pub_id “ HeaderText = “ pub_id “ /> </ Columns > </ asp:GridView > </ ItemTemplate > </ asp:TemplateField > </ Columns > </ asp:GridView >
protected void GridView1_RowDataBound( object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Cells[ 1 ].FindControl( “ GridView2 “ ); } }
可是在FindControl(“GridView2”)后只有一个DataBind()方法,并没有DataSource这个属性,要怎样才能给里面的那个GridView2指定一个新的数据源呢?
——————————————————–
GridView GRTemp=(GridView)e.Row.Cells[1].FindControl(“GridView2”); GRTemp.DataSource=你的source; GRTemp.DataBind();
========================================================================================
Repeater嵌套:
=======================================================================================
// 在绑定分类品名时,绑定分类下的产品 private void rptCategories_ItemDataBound( object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) { BLL.Products products = new BLL.Products(); if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater rptProduct = (Repeater) e.Item.FindControl( “ rptProduct “ ); // 找到分类Repeater关联的数据项 DataRowView rowv = (DataRowView)e.Item.DataItem; // 提取分类ID int CategorieId = Convert.ToInt32(rowv[ “ ID “ ]); // 根据分类ID查询该分类下的产品,并绑定产品Repeater rptProduct.DataSource = products.GetProductsByCategorieId(CategorieId); rptProduct.DataBind(); } }
=========================================================================================
gridView嵌套:
========================================================================================
protected void gvUserList_RowDataBound( object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow)
{ DataRowView rowv = (DataRowView)e.Row.DataItem; Label lblCareer = (Label)e.Row.FindControl( “ lblCareer “ ); string tmp_myCareer = rowv[ “ mycareer “ ].ToString().Trim();
} }
转载于:https://www.cnblogs.com/qiantuwuliang/archive/2009/08/17/1548066.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184805.html原文链接:https://javaforall.cn