加载动态创建的单选按钮列表

时间:2013-07-24 18:15:33

标签: c# asp.net

我正在尝试生成动态单选按钮列表,但问题是动态列表不会在页面加载时显示。仅显示“提交”按钮。这是我正在使用的代码:

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

2 个答案:

答案 0 :(得分: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);
        }
    }
}

它的工作正确。我希望它会有所帮助。

答案 1 :(得分:0)

您可以定义一个空的RadioButtonList控件,然后使用Page_Load上的项填充该控件。具有您不必手动创建它的优势。同样使用DataBind机制,控件为您提供了一个更好的解决方案(ObjectDataSource的Select方法应该返回项目)。

但除此之外,可能{@ 1}的@Page指令(ASPX页面标记中的第一行)设置为false。如果是这样,则不会调用AutoEventWireup事件处理程序。该指令通常如下所示:

Page_Load

我复制了剩下的代码,一切运行得很好。