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

2 回答 2

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

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

于 2013-07-24T18:33:43.713 回答
0

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

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

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

我复制了您的其余代码,一切运行良好。

于 2013-07-24T19:41:14.150 回答