2016-10-22 4 views
0

Я пытаюсь добавить LinkButton динамическиasp.net кнопку добавить ссылку динамически нажмите функцию

Это HTML-код:

  <div id="resultDivText" runat="server"> 
      <asp:PlaceHolder ID="PlaceHolder1" runat="server"> 

      </asp:PlaceHolder> 
     </div> 

Это C# код

  LinkButton lb = new LinkButton(); 
      lb.Text = songName + "</br>"; //LinkButton Text 
      lb.ID = song.Key.ToString(); // LinkButton ID’s 
      lb.CommandArgument = Convert.ToString(song.Key); 
      lb.CommandName = Convert.ToString(song.Key); 
      lb.Click += new EventHandler(test_Click);      
      this.form1.Controls.Add(lb); 
      PlaceHolder1.Controls.Add(lb); 

И это функция «test_Click»

protected void test_Click(object sender, EventArgs e) 
    { 
     showAllSong("let it be"); 
    } 

Когда я запускаю код, он показывает мне список linkButton, но когда я нажимаю на него, ничего не происходит.

ответ

1

Попробуйте этот код ..

static bool enable = false; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      DynamicButton(); 
     } 
     else if (enable) 
     { 
      DynamicButton(); 
     } 
    } 
    protected void btnBindMapping_Click(object sender, EventArgs e) 
    { 
     enable = true; 
     DynamicButton(); 
    } 
    protected void DynamicButton() 
    { 
     LinkButton lb = new LinkButton(); 
     lb = new LinkButton(); 
     lb.Text = songName + "</br>"; //LinkButton Text 
     lb.ID = song.Key.ToString(); // LinkButton ID’s 
     lb.CommandArgument = Convert.ToString(song.Key); 
     lb.CommandName = Convert.ToString(song.Key); 
     lb.Click += new EventHandler(test_Click); 
     this.form1.Controls.Add(lb); 
     PlaceHolder1.Controls.Add(lb); 
    } 
    protected void test_Click(object sender, EventArgs e) 
    { 
     Response.Write("<script>alert('done'); </script>"); 
    } 
+0

@ y.m это решение работает? –

+0

Благодарю вас за это решение –

+0

, но он не работал –

0

Вы код прекрасно ..Это работает, как ожидалось ..но изменить эту строку

this.form1.Controls.Add(lb); 

к

this.Controls.Add(lb); 

Примечание: обратная передача на сервер не клиент сторонних событий

0

Поскольку вы используете CommandName и CommandArgument в LinkButton, вам необходимо делегировать Command не Click.

lb.Command += new CommandEventHandler(test_Click); 

protected void test_Click(object sender, CommandEventArgs e) 
{ 
    Response.Write(e.CommandArgument + "<br>" + e.CommandName); 
} 

И удалить строку this.form1.Controls.Add(lb);

И это не ясно из вашего вопроса, но вы должны создать эту кнопку каждый раз, когда страница загружена, и что включает в себя PostBack.

0

В подробностях вы не упомянули. когда эта динамическая кнопка создана.

Потому что это может создать проблему.

Если вы вызываете свой код C# в событии загрузки страницы, он работает.

 LinkButton lb = new LinkButton(); 
     lb = new LinkButton(); 
     lb.Text = songName + "</br>"; //LinkButton Text 
     lb.ID = song.Key.ToString(); // LinkButton ID’s 
     lb.CommandArgument = Convert.ToString(song.Key); 
     lb.CommandName = Convert.ToString(song.Key); 
     lb.Click += new EventHandler(test_Click);      
     this.form1.Controls.Add(lb); 
     PlaceHolder1.Controls.Add(lb); 

Если эта кнопка динамически создается на oninit или onload event, то она работает.

+0

я на самом деле создать эту LinkButton на событие OnClick –

+0

Вы создаете LinkButton динамически и добавляет при нажатии на любую кнопку, но при нажатии на вас dyanmically создать кнопку. Он запускает событие postback и после обратной передачи удаляет элемент управления со страницы. Итак, вы должны добавить элемент управления в «page_load» снова –

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