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
<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.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嵌套:
========================================================================================
{
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();
}
}