大家先请看下边的代码<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" Debug="true" %>
<%@ Import Namespace="System" %>
<%@ import Namespace="System.IO" %>
<script runat="server">
    void Page_load(Object sender, EventArgs e)
    {
    int i;
        for (i = 0; i < 10; i++) {
            Label1.Text += "<asp:RadioButton ID='cname' runat='server' Text='第" + i + "项' />"+i+"<br />";
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label2.Text = cname.value;
    }
</script><html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
</head>
<body>
    <form runat="server">        <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
        <asp:Label ID="Label1" runat="server" Width="123px"></asp:Label>
        <asp:Button ID="Button1" runat="server" Text="递交" OnClick="Button1_Click" />
    </form>
    
</body>
</html>我想做一个投票程序,在不知道投票项有几项的情况下希望循环显示RadioButton控件,然后显示在Label1中,可是如上面代码得出的结果确不能正常显示RadioButton控件请问是为什么?如果把RadioButton换成<input id="cname" type="radio" runat="server" /> 则能正常显示,但如果执行Button1_Click,则会提示错误,说没有cname这个对象,请问这是为什么?要如何解决,谢谢。

解决方案 »

  1.   

    不能这么添加服务器端控件的,你这样把runat=server输出到客户端去了,客户端不认识,或者用数据绑定的方法,或者应该这么做<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" Debug="true" %>
    <%@ Import Namespace="System" %>
    <%@ import Namespace="System.IO" %>
    <script runat="server">
    const int n = 10;
    RadioButton[] rbs;    void Page_load(Object sender, EventArgs e)
        {
    rbs = new RadioButton[n];
            for (int i = 0; i < n; i++) {     rbs[i] = new RadioButton();
        rbs[i].GroupName = "cname";
        rbs[i].ID = "cname" + i.ToString();
        rbs[i].Text = "第" + (i+1).ToString() + "项";
        ph.Controls.Add(rbs[i]);
        ph.Controls.Add(new LiteralControl("<BR/>"));
            }
        }    protected void Button1_Click(object sender, EventArgs e)
        {
    RadioButton rb = null;
    foreach(RadioButton rb2 in rbs)
    if(rb2.Checked)
    {
    rb = rb2;
    break;
    } if (rb != null)
             Label2.Text = rb.Text;
        }
    </script><html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
        <form runat="server">        <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br>
            <asp:Label ID="Label1" runat="server" Width="123px"></asp:Label> <asp:PlaceHolder id="ph" runat="server" />
            <asp:Button ID="Button1" runat="server" Text="递交" OnClick="Button1_Click" />
        </form>
        
    </body>
    </html>
      

  2.   

    数据绑定这么做<%@ Page Language="C#" EnableViewState="true"%>
    <%@ Import Namespace="System" %>
    <%@ import Namespace="System.IO" %>
    <script runat="server">
        void Page_load(Object sender, EventArgs e)
        {
    if (!IsPostBack)
    { string[] ss = {"第1项","第2项","第3项","第4项","第5项","第6项","第7项","第8项","第9项","第10项"};
    rbl.DataSource = ss;
    rbl.DataBind();
    }    }    protected void Button1_Click(object sender, EventArgs e)
        { if (rbl.SelectedIndex >=0)
             Label2.Text = rbl.Items[rbl.SelectedIndex].Text;
        }
    </script><html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
        <form runat="server">        <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br>
            <asp:Label ID="Label1" runat="server" Width="123px"></asp:Label>
    <asp:RadioButtonList id="rbl" runat="server" />
            <asp:Button ID="Button1" runat="server" Text="递交" OnClick="Button1_Click" />
        </form>
        
    </body>
    </html>
      

  3.   

    那如果我想把RadioButton和其他代码混合起来要如何做呢?我这里用Html代码演示一下(asp.net刚开始学不熟,不好意思。)<table width="100%"  border="0" cellpadding="5" cellspacing="1" bgcolor="#666666">
    <form name="form1" id="form1" method="post" action="">
      <tr>
        <td colspan="2" bgcolor="#F7f7f7">请选择投票项</td>
        </tr>
      <tr>
        <td width="4%" height="25" bgcolor="#FFFFFF"><input type="radio" name="radiobutton" value="radiobutton" /></td>
        <td width="96%" bgcolor="#FFFFFF">
          投票项一
        </td>
      </tr>
      <tr>
        <td bgcolor="#FFFFFF"><input type="radio" name="radiobutton" value="radiobutton" /></td>
        <td bgcolor="#FFFFFF">      投票项二 GetImages</td>
      </tr>
      <tr>
        <td bgcolor="#FFFFFF"><input type="radio" name="radiobutton" value="radiobutton" /></td>
        <td bgcolor="#FFFFFF">      投票项三</td>
      </tr>
    </form>
    </table>类似这么一个东西,这里面可能每个项还会加一些代码,比如投票项三的GetImages那里可能会加一个函数显示代表票数的图片,方便的话请讲一下大概的思路,谢谢。
      

  4.   

    use a datagrid + databinding and this guy's RowSelectorColulmnhttp://www.metabuilders.com/Tools/RowSelectorColumn.aspx
      

  5.   

    asp.net做这种东西真不方便,asp就省事多了
      

  6.   

    你这种想法是不对的,一开始总有点不习惯,主要是思路问题,等你学会了ASP.NET,你就知道ASP.NET的威力了