2016-04-21 4 views
0

2Всего! Мне нужна ваша помощь. Я хочу создать статические строки с событием нажатия кнопки в методе Page_Load (CreateChildControls). Когда я нажимаю «Создать» и хотите визуализировать ту же строку в соответствии с существующейASP.net - C# Скрыть/Показать элементы управления при нажатии кнопки

T его мой UI: enter image description here Это мой код:

public class HelloWorldWeb : WebPart 
{ 
    private TextBox txt11; 
    private DateTimeControl dt11; 
    private DateTimeControl dt12; 
    private TextBox txt12; 
    private TextBox txt13; 
    private Button btn1; 

    private TextBox txt21; 
    private DateTimeControl dt21; 
    private DateTimeControl dt22; 
    private TextBox txt22; 
    private TextBox txt23; 
    private Button btn2; 

    //private TextBox txt31; 
    //private DateTimeControl dt31; 
    //private DateTimeControl dt132; 
    //private TextBox txt32; 
    //private TextBox txt33; 
    //private Button btn3; 

    protected override void CreateChildControls() 
    { 

     txt11 = new TextBox(); 
     txt12 = new TextBox(); 
     txt13 = new TextBox(); 
     dt11 = new DateTimeControl(); 
     dt11.DateOnly = true; 
     dt12 = new DateTimeControl(); 
     dt12.DateOnly = true; 
     btn1 = new Button(); 
     btn1.Text = "Create"; 
     btn1.Click += new EventHandler(btn1_Click); 


     this.Controls.Add(new LiteralControl("<table class='ms-formbody' vAlign='top' >")); 

     this.Controls.Add(new LiteralControl("<tr>")); 
     this.Controls.Add(new LiteralControl("<td width='100' >")); 
     this.Controls.Add(txt11); 
     this.Controls.Add(new LiteralControl("</td>")); 
     this.Controls.Add(new LiteralControl("<td width='100'>")); 
     this.Controls.Add(dt11); 
     this.Controls.Add(new LiteralControl("</td>")); 
     this.Controls.Add(new LiteralControl("<td width='100'>")); 
     this.Controls.Add(dt12); 
     this.Controls.Add(new LiteralControl("</td>")); 
     this.Controls.Add(new LiteralControl("<td width='100'>")); 
     this.Controls.Add(txt12); 
     this.Controls.Add(new LiteralControl("</td>")); 
     this.Controls.Add(new LiteralControl("<td width='100'>")); 
     this.Controls.Add(txt13); 
     this.Controls.Add(new LiteralControl("</td>")); 
     this.Controls.Add(new LiteralControl("<td width='100'>")); 
     this.Controls.Add(btn1); 
     this.Controls.Add(new LiteralControl("</td>")); 
     this.Controls.Add(new LiteralControl("</tr>")); 

     if (btn1WasClicked) 
     { 
      this.Controls.Add(new LiteralControl("<tr>")); 
      this.Controls.Add(new LiteralControl("<td width='100' >")); 
      this.Controls.Add(txt21); 
      this.Controls.Add(new LiteralControl("</td>")); 
      this.Controls.Add(new LiteralControl("<td width='100'>")); 
      this.Controls.Add(dt21); 
      this.Controls.Add(new LiteralControl("</td>")); 
      this.Controls.Add(new LiteralControl("<td width='100'>")); 
      this.Controls.Add(dt22); 
      this.Controls.Add(new LiteralControl("</td>")); 
      this.Controls.Add(new LiteralControl("<td width='100'>")); 
      this.Controls.Add(txt22); 
      this.Controls.Add(new LiteralControl("</td>")); 
      this.Controls.Add(new LiteralControl("<td width='100'>")); 
      this.Controls.Add(txt23); 
      this.Controls.Add(new LiteralControl("</td>")); 
      this.Controls.Add(new LiteralControl("<td width='100'>")); 
      this.Controls.Add(btn2); 
      this.Controls.Add(new LiteralControl("</td>")); 
      this.Controls.Add(new LiteralControl("</tr>")); 
     } 

     this.Controls.Add(new LiteralControl("</table>")); 

     base.CreateChildControls(); 
    } 


    private bool btn1WasClicked = false; 

    private void btn1_Click(object sender, EventArgs e) 
    { 
     btn1WasClicked = true; 
    } 
} 
+0

Как проверить кнопку нажата? – Gohyu

+0

Мое решение не работает; – Gohyu

+0

Используйте привязку данных, с DataGrid –

ответ

1

Добавьте код для добавления новая строка в обработчик событий вместо того, чтобы использовать его в CreateChildControls:

private void btn1_Click(object sender, EventArgs e) 
{ 
    // Add a new row 
} 

Как это вы можете добавить новая строка при нажатии кнопки и не должна использовать логическую переменную btn1WasClicked.

0

diiN_ это право просто положить весь код в сторону, если (btn1WasClicked) под btn1_Click

private void btn1_Click(object sender, EventArgs e) 
{ 
// Add a new row 
    this.Controls.Add(new LiteralControl("<tr>")); 
    this.Controls.Add(new LiteralControl("<td width='100' >")); 
    this.Controls.Add(txt21); 
    this.Controls.Add(new LiteralControl("</td>")); 
    this.Controls.Add(new LiteralControl("<td width='100'>")); 
    this.Controls.Add(dt21); 
    this.Controls.Add(new LiteralControl("</td>")); 
    this.Controls.Add(new LiteralControl("<td width='100'>")); 
    this.Controls.Add(dt22); 
    this.Controls.Add(new LiteralControl("</td>")); 
    this.Controls.Add(new LiteralControl("<td width='100'>")); 
    this.Controls.Add(txt22); 
    this.Controls.Add(new LiteralControl("</td>")); 
    this.Controls.Add(new LiteralControl("<td width='100'>")); 
    this.Controls.Add(txt23); 
    this.Controls.Add(new LiteralControl("</td>")); 
    this.Controls.Add(new LiteralControl("<td width='100'>")); 
    this.Controls.Add(btn2); 
    this.Controls.Add(new LiteralControl("</td>")); 
    this.Controls.Add(new LiteralControl("</tr>")); 
} 
+0

Когда я нажимаю btn1_Click, перезагружает и загружает страницу CreateChildControls() .... – Gohyu

Смежные вопросы