2016-05-18 184 views
1

按鈕我一直在考慮在asp.net web表單任務,通過使用動態生成Buttons/Labels以15分鐘爲單位的時間間隔的值(10:0010:1510:30 ... 12:00)一個循環。動態生成asp.net

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

檢查我的回答如下。它應該適合你。 – vohrahul

+0

如果有任何答案解決了您的問題,請考慮通過點擊複選標記來接受它。這向更廣泛的社區表明,您已經找到了解決方案,併爲給出答案的人和您自己提供了一些聲譽。沒有義務這樣做。 –

回答

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

好的答案,總是不止一種方法來完成同樣的事情 –

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

你可以使用一個TimeSpan並在每次迭代15分鐘遞增的時間。

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

您錯過了按鈕點擊事件。他需要顯示哪個按鈕被點擊。正確答案雖然。 – vohrahul

+1

@vohrahul好,我現在把這個邏輯加入到答案中。 –

+0

在這裏你得到一個+1您的答案先生。 :) – vohrahul