本帖最后由 huangxiandong_dodo 于 2010-07-23 12:05:10 编辑

解决方案 »

  1.   

    Repeater Repeater2= (Repeater)e.Item.Parent;
    在Command里这么写,不难
      

  2.   


    protected void RpFirst_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                //判断里层repeater处于外层repeater的哪个位置( AlternatingItemTemplate,FooterTemplate,
                //HeaderTemplate,,ItemTemplate,SeparatorTemplate)
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    Repeater rep = e.Item.FindControl("RpSecondMenu") as Repeater;//找到里层的repeater对象
                    DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项 
                    int fatherID = Convert.ToInt32(rowv["FatherID"]); //获取填充子类的id 
                    Maticsoft.BLL.YZ_MenuInfo bll = new Maticsoft.BLL.YZ_MenuInfo();
                    rep.DataSource = bll.getSecondMenuListByFatherID(fatherID);
                    rep.DataBind();
                }        }
    把里面该改的改成你项目对应的就可以了
      

  3.   

    <asp:Label ID="Label1" runat="server" Text='<%#Eval("UserID")%>'></asp:Label> <br />
      <asp:Repeater ID="Repeater2" runat="server" DataSource='<%# GetDetails(Convert.ToInt32(Eval("ID"))) %>'>  
    添加按钮
    protected void Button1_Click(object sender, EventArgs e)
            {
                RepeaterItem item  =(RepeaterItem) ((Button)sender).Parent;
                Label l = (Label)item.FindControl("lbl");
                Response.Write(l.Text);
            }
      

  4.   

    页面文件
    <%@ Import Namespace="System.Data" %>
    <html>
    <head runat="server">
        <title>版块管理</title>
        <style type="text/css">
        input
        {
            font-size:9pt;
            font-family:Verdana;
        }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Repeater ID="rpt_Class" runat="server" OnItemCommand="rpt_Class_ItemCommand">
                <HeaderTemplate>
                    <table cellpadding="3" cellspacing="1" style="font-size:9pt; font-family:Verdana;">
                        <tr>
                            <td>
                                新建分类 <asp:TextBox ID="tb_NewClassName" runat="server"></asp:TextBox>
                                <asp:Button ID="btn_AddBoard" runat="server" CommandName="AddClass" Text="○ 添加分类"/>
                            </td>
                        </tr> 
                </HeaderTemplate>
                <ItemTemplate>
                <tr style="background-color:#f0f0f0">
                <td>
                    <asp:Button ID="btn_DelClass" runat="server" CommandArgument='<%# Eval("ClassID") %> ' CommandName="DelClass" Text="× 删除分类" OnClientClick="return confirm('确实删除分类吗?删除分类会清除分类下所有版块以及版块下的所有帖子!')"/>        
                    <asp:TextBox ID="tb_ClassName" runat="server" Text='<%# Eval("ClassName") %>' />        
                    <asp:Button ID="btn_ModifyClass" runat="server" CommandArgument='<%# Eval("ClassID") %> ' CommandName="ModifyClass" Text="√ 修改分类"/>
                </td>
                </tr> 
                <tr>
                    <td>
                        在此分类下添加版块 <asp:TextBox ID="tb_NewBoardName" runat="server"></asp:TextBox>
                        <asp:Button ID="btn_AddBoard" runat="server" CommandArgument='<%# Eval("ClassID") %> ' CommandName="AddBoard" Text="○ 添加版块"/>
                    </td>
                </tr> 
                <asp:Repeater ID="rpt_Board" runat="server" DataSource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("RelationBetweenClassAndBoard") %>' OnItemCommand="rpt_Board_ItemCommand">
                    <ItemTemplate>
                    <tr>
                        <td>
                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--------
                            <asp:Button ID="btn_DelClass" runat="server" CommandArgument='<%# Eval("[\"BoardID\"]")%> ' CommandName="DelBoard" Text="× 删除版块" OnClientClick="return confirm('确实删除版块吗?删除版块会清除版块下的所有帖子!')"/>           
                            <asp:TextBox ID="tb_BoardName" runat="server" Text='<%# Eval("[\"BoardName\"]")%>'></asp:TextBox>                
                            <asp:Button ID="btn_ModifyBoard" runat="server" CommandArgument='<%# Eval("[\"BoardID\"]")%> ' CommandName="ModifyBoard" Text="√ 修改版块"/>
                        </td>
                    </tr>
                    </ItemTemplate>
                </asp:Repeater>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>       
        </div>
        </form>
    </body>
    </html>后台文件
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Collections;
    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;public partial class Admin_ManageBoard : System.Web.UI.Page
    {
        private string sConnectionString = ConfigurationManager.ConnectionStrings["ForumConnString"].ToString();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                SetBind();
            }
        }    private void SetBind()
        {
            DataSet ds = new DataSet();
            using (SqlConnection conn = new SqlConnection(sConnectionString))
            {
                SqlDataAdapter da = new SqlDataAdapter("select * from tbClass;select * from tbBoard", conn);
                da.Fill(ds);
            }
            ds.Relations.Add("RelationBetweenClassAndBoard", ds.Tables[0].Columns["ClassID"], ds.Tables[1].Columns["BoardClassID"]);
            rpt_Class.DataSource = ds;
            rpt_Class.DataBind();
        }
        protected void rpt_Board_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "DelBoard")
            {
               using (SqlConnection conn = new SqlConnection(sConnectionString))
               {
                   conn.Open();
                   using (SqlCommand cmd = new SqlCommand("delete tbTopic where TopicBoardID in (select BoardID from tbBoard where BoardClassID=@BoardID);delete tbBoard where BoardID=@BoardID", conn))
                   {
                       cmd.Parameters.AddWithValue("@BoardID", e.CommandArgument);
                       cmd.ExecuteNonQuery();
                       SetBind();
                   }
               }              
            }
            if (e.CommandName == "ModifyBoard")
            {
                RepeaterItem ri = e.Item;
                TextBox tb = ri.FindControl("tb_BoardName") as TextBox;
                using (SqlConnection conn = new SqlConnection(sConnectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand("update tbBoard set BoardName=@BoardName where BoardID=@BoardID", conn))
                    {
                        cmd.Parameters.AddWithValue("@BoardName", tb.Text);
                        cmd.Parameters.AddWithValue("@BoardID", e.CommandArgument);
                        cmd.ExecuteNonQuery();
                        SetBind();
                    }
                }   
            }
        }    protected void rpt_Class_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "AddClass")
            {
                RepeaterItem ri = e.Item;
                TextBox tb = ri.FindControl("tb_NewClassName") as TextBox;
                using (SqlConnection conn = new SqlConnection(sConnectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand("insert into tbClass (ClassName) values (@ClassName)", conn))
                    {
                        cmd.Parameters.AddWithValue("@ClassName", tb.Text);
                        cmd.ExecuteNonQuery();
                        SetBind();
                    }
                }
            }
            if (e.CommandName == "AddBoard")
            {
                RepeaterItem ri = e.Item;
                TextBox tb = ri.FindControl("tb_NewBoardName") as TextBox;
                using (SqlConnection conn = new SqlConnection(sConnectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand("insert into tbBoard (BoardName,BoardClassID) values (@BoardName,@BoardClassID)", conn))
                    {
                        cmd.Parameters.AddWithValue("@BoardName", tb.Text);
                        cmd.Parameters.AddWithValue("@BoardClassID", e.CommandArgument);
                        cmd.ExecuteNonQuery();
                        SetBind();
                    }
                }
            }
            if (e.CommandName == "DelClass")
            {
                using (SqlConnection conn = new SqlConnection(sConnectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand("delete tbTopic where TopicBoardID in (select BoardID from tbBoard where BoardClassID=@ClassID);delete tbBoard where BoardClassID=@ClassID;delete tbClass where ClassID=@ClassID", conn))
                    {
                        cmd.Parameters.AddWithValue("@ClassID", e.CommandArgument);
                        cmd.ExecuteNonQuery();
                        SetBind();
                    }
                }
            }
            if (e.CommandName == "ModifyClass")
            {
                RepeaterItem ri = e.Item;
                TextBox tb = ri.FindControl("tb_ClassName") as TextBox;
                using (SqlConnection conn = new SqlConnection(sConnectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand("update tbClass set ClassName=@ClassName where ClassID=@ClassID", conn))
                    {
                        cmd.Parameters.AddWithValue("@ClassName", tb.Text);
                        cmd.Parameters.AddWithValue("@ClassID", e.CommandArgument);
                        cmd.ExecuteNonQuery();
                        SetBind();
                    }
                }   
            }
        }
    }
      

  5.   

    你怎么会在Repeater2的Item里面找Repeater2的呢?
    Repeater2不是在Repeater1的Item里面么?
    我看不懂了。这个代码。
      

  6.   

    谢谢    1 楼 chenghaoorange    的确是的    Parent  是找到父容器,也就是他自己了,,,只不过  wuyq11 和 zzxap   有点没有看明白,,,当然用处也很的的结贴吧!