gentle man
gentle man

Reputation: 81

Dynamically generate Button in asp.net

I have been given a task in asp.net web form to dynamically generate Buttons / Labels with values of time intervals in 15 minute steps (10:00, 10:15, 10:30 ... 12:00) by using a loop.

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void Timer1_Tick(object sender, EventArgs e)
    {
        CreateControl();
    }

    void CreateControl()
    {
        Button btn1 = new Button();
        btn1.ID = "btn1";
        btn1.Text = "click me";
        btn1.Click += new EventHandler(btn1_Click);
        div1.Controls.Add(btn1);
    }

    void btn1_Click(object sender, EventArgs e)
    {
        div1.InnerHtml += "btn1 was clicked";
    }
}

Upvotes: 1

Views: 130

Answers (3)

Matt Rowland
Matt Rowland

Reputation: 4595

You can use a TimeSpan and increment the time by 15 minutes with each iteration.

int j = 0;
for (TimeSpan i = new TimeSpan(10, 0, 0); i.ToString(@"hh\:mm") != "12:00"; i = i.Add(new TimeSpan(0, 15, 0)), j++)
{
    Button btn1 = new Button();
    btn1.ID = "btn" + j;
    btn1.Text = i.ToString(@"hh\:mm");
    btn1.Click += new EventHandler(btn1_Click);
    div1.Controls.Add(btn1);

    Label lbl = new Label();
    lbl.Text = i.ToString(@"hh\:mm");
    div1.Controls.Add(lbl);

    Console.WriteLine(i.ToString(@"hh\:mm"));
}

void btn1_Click(object sender, EventArgs e)
{
    string buttonId = ((Button)sender).ID;
    div1.InnerHtml += "Button: " + buttonId + " was clicked";
}

Upvotes: 2

vohrahul
vohrahul

Reputation: 1191

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        TimeSpan startTime = new TimeSpan(0, 0, 0);
        TimeSpan endTime = new TimeSpan(1, 0, 0);
        int i = 0; 

        While(startTime <= endTime)
        {
            i++;
            CreateControl(startTime.ToString(@"hh\:mm\:ss"), i);
            startTime += TimeSpan.FromMinutes(15); //Add 15 minutes
        }
    }


    void CreateControl(string printTime, increment)
    {
        Button btn1 = new Button();
        btn1.ID = "btn_" + increment;
        btn1.Text = printTime;
        btn1.Click += new EventHandler(btn_Click);
        div1.Controls.Add(btn1);
    }

    void btn_Click(object sender, EventArgs e)
    {
        string ID = (sender as Button).ID;
        div1.InnerHtml += "btn " + ID + " was clicked";
    }
}

Upvotes: 2

Kahbazi
Kahbazi

Reputation: 15015

 void CreateControl()
    {
        TimeSpan FifteenMinutes = new TimeSpan(0, 15, 0);
        TimeSpan Time = new TimeSpan(0,0,0);
        int i = 1;
        while (Time.Hours != 24)
        {
            Button btn1 = new Button();
            btn1.ID = "btn"+i;
            btn1.CommandArgument = i.ToString();
            btn1.Text = "click me";
            btn1.Click += new EventHandler(btn1_Click);
            div1.Controls.Add(btn1);

            Label lbl = new Label();
            lbl.Text = Time.ToString();
            div1.Controls.Add(lbl);

            Time = Time.Add(FifteenMinutes);

            i++;
        }
    }

Upvotes: 2

Related Questions