先贴代码。                    <div class="nav">
                        <ul id="testUL" runat="server">
                            <%--<asp:Literal ID="Literal1" runat="server"></asp:Literal>--%>
                        </ul>
                    </div>                        string[] ExamsID = ExamsInfo.ToString().Split(',');
                        foreach (string ID in ExamsID)
                        {
                            Literal newLit = new Literal();
                            newLit.Text = ExamansBll.SelectExamsInfo(ID);
                            testUL.Controls[1].Controls.Add(newLit);
                        }
思路应该是这样的,在后台拼了一条字符串,包含复选框,单条赋值给已经添加的Literal没有问题,可如果我的字符串,条数不固定,那么<ul></ul>下就不可以写Literal控件,------------------------------------------------------------------------------而是要C#动态添加,以上C#代码报错。“System.Web.UI.WebControls.Literal”不允许使用子控件。
拼接出来的单条字符串是这样:<li><font color='#000' size='4'>民法测试.</font><br /><input type='checkbox' value='1' />A-处罚 <input type='checkbox' value='1' />B-处罚 <input type='checkbox' value='1' />C-处罚 <input type='checkbox' value='1' />D-处罚 </li>
可我要的是多条,条数不固定,如何把拼接出来的多条字符串动态添加到UL下。
求高手解决。

解决方案 »

  1.   

    那你别用Literal了,他不允许有子控件,你用一个可以容纳子控件的容器,在它上面添加,比如panel
      

  2.   


    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <html>
    <head>
    <script type="text/javascript">
    function contactlist(){
    var table = document.getElementById("contactTable");
    var tr = table.insertRow(table.rows.length);//添加一行
    tr.align="center";
    tr.bgcolor="#F3F4F3";
    tr.height="23"; //添加五列
    var td0 = tr.insertCell(0);
    td0.width="20%";
    var td1 = tr.insertCell(1);
    td1.width="20%";
    var td2 = tr.insertCell(2);
    td2.width="8%";
    var td3 = tr.insertCell(3);
    td3.width="30%";
    var td4 = tr.insertCell(4);
    td4.width="20%";

    //设置列内容
    td0.innerHTML = "";
    td1.innerHTML = "<input type='file' id='dataAudio' name='dataAudio'/><input type='hidden' name='dataAudios'/><input type='hidden' name='audioOldName'/>";
    td2.innerHTML = "<input type='text' name='playDateTime' id='playDateTime' onkeyup='validateNumber(this);' size='5' maxlength='3' style='color: red' />";
    td3.innerHTML = "<input type='text' name='content' id='content' size='35' maxlength='300'/>";
    td4.innerHTML = "<input type='button' value='删除' onclick='removeRow(this.parentNode.parentNode)'/>";

    }function removeRow(r)
    {
        var root = r.parentNode;
        var allRows = root.getElementsByTagName('tr');
        if(allRows.length > 3){
            root.removeChild(r);
        }else{
         alert("不能删除改行!");
        }
    }
    </script >
    </head>
    <body><table id="contactTable" width="98%" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#D9D9D9"> 
        <tr bgcolor="#F3F4F3" align="center" height="23">
           <td colspan="5" align="left"><input type="button" value="添加帧" class="button" onclick="return contactlist();"/></td>
        </tr>
        <tr bgcolor="#F3F4F3" align="center" height="23">
           <td width="20%">上传图片</td>
           <td width="20%">上传声音</td>
           <td width="8%">播放时间</td>
           <td width="30%">内    容</td>
           <td width="20%">操作</td>
        </tr>
    </table></body>
    </html>
      

  3.   


    您的意思,把控件换成panel,在Panel下面动态添加Literal吗?
      

  4.   

    直接这样就可以了啊。。                Literal li = new Literal();
                    li.Mode= LiteralMode.PassThrough; //不修改文本内容
                    li.Text="<li><input type='checkbox' value='1' />民法测试" + i + "</li>";
                    testUL.Controls.Add(li);
    testUL.Controls[1].Controls.Add(newLit);
    这里两个Controls就自然跑到li里面去了