.aspx <asp:Repeater runat="server" ID="rptList" OnItemDataBound="rptList_ItemDataBound"> <HeaderTemplate> <table id="mytable" border="1" cellpadding="0" cellspacing="0"> </HeaderTemplate> <ItemTemplate> <tr> <td class="alt"> <asp:Label runat="server" ID="lblKey" Text='<%#Eval("key")%>'></asp:Label> </td> <td> <asp:Repeater runat="server" ID="rptSubList" DataSource='<%#((System.Collections.Generic.KeyValuePair<string,System.Collections.Generic.List<dhySys.Entry.Info>>)Container.DataItem).Value %>'> <ItemTemplate> <table> <tr> <td style="width: 65%"> <%#Eval("Title") %> </td> <td> <asp:RadioButtonList runat="server" ID="rblScore" RepeatDirection="Horizontal" Width="250px"> </asp:RadioButtonList> <asp:HiddenField runat="server" ID="hidScore" Value='<%#Eval("Score") %>'></asp:HiddenField> <%--<asp:HiddenField runat="server" ID="hidType" Value='<%# DataBinder.Eval(((RepeaterItem)Container.Parent.Parent).DataItem, "key")%>' /> --%> </td> </tr> </table> </ItemTemplate> </asp:Repeater> </td> </tr> </ItemTemplate> <FooterTemplate> .aspx.cs protected void BindRptList() { Dictionary<string, List<Info>> dicts = "数据源"; rptList.DataSource = dicts; rptList.DataBind(); } protected void rptList_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater rptSub = e.Item.FindControl("rptSubList") as Repeater; //动态生成RadioButtonList for (int i = 0; i < rptSub.Items.Count; i++) { HiddenField hidScore = (HiddenField)rptSub.Items[i].FindControl("hidScore"); RadioButtonList rblScore = (RadioButtonList)rptSub.Items[i].FindControl("rblScore"); int score = int.Parse(hidScore.Value); int[] ss = new int[score]; for (int j = 1; j <= score; j++) { ss[j - 1] = j; } rblScore.DataSource = ss; rblScore.DataBind(); } } }