locked
Multiple repeaters on same page with same data RRS feed

  • Question

  • User-253940806 posted

    I've got a page that I want to display the same data, but in different forms. The users will click buttons in order to get to the different views of the data. I'm using a repeater as the control. I just started on this, so I don't have any code yet for display. I thought about binding the data to different repeater controls on the button click events. There will be about 4 buttons on the page and only one view of the data at a time. Once the user clicks a button, that view will then be displayed.

    Wednesday, January 2, 2019 12:18 PM

Answers

  • User-1174608757 posted

    Hi splitfire,

    According to your description, I have made a sample here.

    I suggest you to set repeater data binding method in Button click.When click the button,you could also set the visibility of repeater you want  as true, else as false. 

    Here is my demo ,I hope it can help you. 

    repeater.aspx:

    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
             
               <asp:Repeater ID="Repeater1" runat="server">
                    <HeaderTemplate>
                      <b style="color:red">Repeater1</b>  <br/>
                    </HeaderTemplate>            
                    <ItemTemplate>
                  <div style="color:red"><%#Eval("fruit") %> <%#Eval("color") %></div> 
                    </ItemTemplate>              
                </asp:Repeater> 
    
                
                <asp:Repeater ID="Repeater2" runat="server">
                     <HeaderTemplate>
                      <b style="color:blue"> Repeater2</b> <br/>
                    </HeaderTemplate>            
                    <ItemTemplate>
                   <div style="color:blue"><%#Eval("fruit") %> <%#Eval("color") %></div> 
                    </ItemTemplate>
                </asp:Repeater>
                 
                <asp:Repeater ID="Repeater3" runat="server">
                    <HeaderTemplate>
                       <b style="color:darkorange">Repeater3</b> <br/>
                    </HeaderTemplate>            
                    <ItemTemplate>
                  <div style="color:darkorange"><%#Eval("fruit") %> <%#Eval("color") %></div> 
                    </ItemTemplate>
                </asp:Repeater>
                <asp:Button ID="Button1" runat="server" Text="repeater1" OnClick="Button1_Click" />
                 <asp:Button ID="Button2" runat="server" Text="repeater2" OnClick="Button2_Click" />
                  <asp:Button ID="Button3" runat="server" Text="repeater3" OnClick="Button3_Click" />
    
    
    
            </div>
            <div>
    
    
            </div>
    
        </form>
    </body>

    repeater.aspx.cs:

       public partial class reapter : System.Web.UI.Page
        {
            private static readonly string conStr = ConfigurationManager.ConnectionStrings["mssqlserver"].ConnectionString;
    
            public static DataTable ExecuteDataTable(string sql, params SqlParameter[] pms)
            {
    
                DataTable dt = new DataTable();
                using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
                {
                    if (pms != null)
                    {
    
                        adapter.SelectCommand.Parameters.AddRange(pms);
    
    
                    }
                    adapter.Fill(dt);
    
                }
                return dt;
    
            }
            protected void Page_Load(object sender, EventArgs e)
            { 
    
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                Repeater1.Visible=true;
                string sql = "select * from db";
                this.Repeater1.DataSource = ExecuteDataTable(sql);
                Repeater1.DataBind();
                Repeater2.Visible = false;
                Repeater3.Visible = false;
            }
    
            protected void Button2_Click(object sender, EventArgs e)
            {
                Repeater2.Visible = true;
                string sql = "select * from db";
                this.Repeater2.DataSource = ExecuteDataTable(sql);
                Repeater2.DataBind();
                Repeater1.Visible = false;
                Repeater3.Visible = false;
            }
    
            protected void Button3_Click(object sender, EventArgs e)
            {
                Repeater3.Visible = true;
                string sql = "select * from db";
                this.Repeater3.DataSource = ExecuteDataTable(sql);
                Repeater3.DataBind();
                Repeater2.Visible = false;
                Repeater1.Visible = false;
            }
        }
    }

    It shows as below:

    Best Regards

    Wei Zhang

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Thursday, January 3, 2019 2:37 AM

All replies

  • User475983607 posted

    Do you have a question or problem?

    Wednesday, January 2, 2019 1:15 PM
  • User-253940806 posted

    I'd like to know if that is a good solution or if someone had some code for something they have done that is similar.

    Wednesday, January 2, 2019 3:14 PM
  • User475983607 posted

    splitfire

    I'd like to know if that is a good solution or if someone had some code for something they have done that is similar.

    There's nothing stopping you from dropping four repeaters in a page and data binding one of the repeaters.  Likewise, show/hide the active repeater or panel.

    You are asking the community to speculate on your intent and requirements.  Perhaps build a few prototypes to find a solution that works best.

    Wednesday, January 2, 2019 3:18 PM
  • User-253940806 posted

    I'm working on an example now. I was just seeing if someone had something out there already built.

    Wednesday, January 2, 2019 3:24 PM
  • User-1174608757 posted

    Hi splitfire,

    According to your description, I have made a sample here.

    I suggest you to set repeater data binding method in Button click.When click the button,you could also set the visibility of repeater you want  as true, else as false. 

    Here is my demo ,I hope it can help you. 

    repeater.aspx:

    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
             
               <asp:Repeater ID="Repeater1" runat="server">
                    <HeaderTemplate>
                      <b style="color:red">Repeater1</b>  <br/>
                    </HeaderTemplate>            
                    <ItemTemplate>
                  <div style="color:red"><%#Eval("fruit") %> <%#Eval("color") %></div> 
                    </ItemTemplate>              
                </asp:Repeater> 
    
                
                <asp:Repeater ID="Repeater2" runat="server">
                     <HeaderTemplate>
                      <b style="color:blue"> Repeater2</b> <br/>
                    </HeaderTemplate>            
                    <ItemTemplate>
                   <div style="color:blue"><%#Eval("fruit") %> <%#Eval("color") %></div> 
                    </ItemTemplate>
                </asp:Repeater>
                 
                <asp:Repeater ID="Repeater3" runat="server">
                    <HeaderTemplate>
                       <b style="color:darkorange">Repeater3</b> <br/>
                    </HeaderTemplate>            
                    <ItemTemplate>
                  <div style="color:darkorange"><%#Eval("fruit") %> <%#Eval("color") %></div> 
                    </ItemTemplate>
                </asp:Repeater>
                <asp:Button ID="Button1" runat="server" Text="repeater1" OnClick="Button1_Click" />
                 <asp:Button ID="Button2" runat="server" Text="repeater2" OnClick="Button2_Click" />
                  <asp:Button ID="Button3" runat="server" Text="repeater3" OnClick="Button3_Click" />
    
    
    
            </div>
            <div>
    
    
            </div>
    
        </form>
    </body>

    repeater.aspx.cs:

       public partial class reapter : System.Web.UI.Page
        {
            private static readonly string conStr = ConfigurationManager.ConnectionStrings["mssqlserver"].ConnectionString;
    
            public static DataTable ExecuteDataTable(string sql, params SqlParameter[] pms)
            {
    
                DataTable dt = new DataTable();
                using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
                {
                    if (pms != null)
                    {
    
                        adapter.SelectCommand.Parameters.AddRange(pms);
    
    
                    }
                    adapter.Fill(dt);
    
                }
                return dt;
    
            }
            protected void Page_Load(object sender, EventArgs e)
            { 
    
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                Repeater1.Visible=true;
                string sql = "select * from db";
                this.Repeater1.DataSource = ExecuteDataTable(sql);
                Repeater1.DataBind();
                Repeater2.Visible = false;
                Repeater3.Visible = false;
            }
    
            protected void Button2_Click(object sender, EventArgs e)
            {
                Repeater2.Visible = true;
                string sql = "select * from db";
                this.Repeater2.DataSource = ExecuteDataTable(sql);
                Repeater2.DataBind();
                Repeater1.Visible = false;
                Repeater3.Visible = false;
            }
    
            protected void Button3_Click(object sender, EventArgs e)
            {
                Repeater3.Visible = true;
                string sql = "select * from db";
                this.Repeater3.DataSource = ExecuteDataTable(sql);
                Repeater3.DataBind();
                Repeater2.Visible = false;
                Repeater1.Visible = false;
            }
        }
    }

    It shows as below:

    Best Regards

    Wei Zhang

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Thursday, January 3, 2019 2:37 AM
  • User-253940806 posted

    I got it working. My page is a little different, but it works.

    Monday, January 28, 2019 12:10 PM