简体   繁体   中英

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";
    }
}
 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++;
        }
    }

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";
}
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";
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM