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

本文关键字:单选按钮 列表 创建 动态 加载 | 更新日期: 2023-09-27 18:24:41

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

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

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

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

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

您可以定义一个空的RadioButtonList控件,然后用Page_Load上的项填充该控件。它的优点是你不必手动创建它。此外,将控件提供的DataBind机制与ObjectDataSource一起使用是一个更好的解决方案(ObjectDataSource的Select方法应该返回项)。

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

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

我复制了你的其余代码,一切都运行得很好。