2013-07-24 6 views
0

Я пытаюсь создать динамический список переключателей, но проблема в том, что динамический список не отображается при загрузке страницы. Отображается только кнопка «Отправить». Вот код, я использую:Загрузка динамически созданного списка переключателей

<asp:PlaceHolder runat="server" ID="PlaceHolder1"/> 
<asp:Button runat="server" ID="Button1" OnClick="Button1_Click" Text="Submit" /> 
<asp:Label runat="server" ID="Label1"/> 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     LoadControls(); 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     var radioButtonList = PlaceHolder1.FindControl("1") as RadioButtonList; 
     Label1.Text = radioButtonList.SelectedValue; 
    } 

    private void LoadControls() 
    { 
     var tmpRBL = new RadioButtonList(); 
     tmpRBL.ID = "1"; 

     for (int i = 1; i <= 5; i++) 
     { 
      var tmpItem = new ListItem(i.ToString(), i.ToString()); 
      tmpRBL.Items.Add(tmpItem); 
     } 

     PlaceHolder1.Controls.Add(tmpRBL); 
    } 
+0

Попробуйте поместить его в 'UpdatePanel' – PiLHA

+0

Этот код должен работать нормально, убедитесь, что у вас нет другого' control', который может мешать вашему 'render'. – EmmanuelRC

+0

Я пробовал панель обновления, но она не решила мою проблему. У меня нет другого элемента управления, который может быть соединен с – user2502561

ответ

0

WebForm1.aspx

<!DOCTYPE html> 

    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
     <title></title> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
     <div> 
      <asp:PlaceHolder runat="server" ID="PlaceHolder1"/> 
      <asp:Button runat="server" ID="Button1" OnClick="Button1_Click" Text="Submit" /> 
      <asp:Label runat="server" ID="Label1"/> 
     </div> 
     </form> 
    </body> 
    </html> 

WebForm1.aspx.cs

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    using System.Web.UI; 
    using System.Web.UI.WebControls; 

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

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      var radioButtonList = PlaceHolder1.FindControl("1") as RadioButtonList; 
      Label1.Text = radioButtonList.SelectedValue; 
     } 

     private void LoadControls() 
     { 
      var tmpRBL = new RadioButtonList(); 
      tmpRBL.ID = "1"; 

      for (int i = 1; i <= 5; i++) 
      { 
       var tmpItem = new ListItem(i.ToString(), i.ToString()); 
       tmpRBL.Items.Add(tmpItem); 
      } 

      PlaceHolder1.Controls.Add(tmpRBL); 
     } 
    } 
} 

Он работает правильно. Надеюсь, это будет полезно.

+0

. Благодарю вас за ответ. Я еще не решил, используя предложенное вами решение. – user2502561

+0

. Что вы используете на странице, кроме этот контроль и код? В вашем вопросе нет никаких проблем. –

+0

Нет другого управления, кроме выше. Мне нужно создать динамический список радио и обработчик событий для отображения выбранного значения управления списком переключателей – user2502561

0

Вы можете определить пустой элемент управления RadioButtonList, который затем будет заполнен элементами в Page_Load. Имеет то преимущество, что вам не нужно создавать его вручную. Также, используя механизм DataBind, управление предлагает вам вместе с ObjectDataSource лучшее решение (метод Select объекта ObjectDataSource должен возвращать элементы).

Но в стороне от этого, возможно, AutoEventWireup директивы @Page (первая строка в разметке страницы ASPX) имеет значение false. Если так, то обработчик события Page_Load не вызывается. Директива обычно выглядит так:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> 

Я скопировал остальную часть вашего кода, и все работает отлично.

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