动态给页面添加控件的问题
先贴代码。
<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下。
求高手解决。 --------------------编程问答-------------------- 那你别用Literal了,他不允许有子控件,你用一个可以容纳子控件的容器,在它上面添加,比如panel --------------------编程问答--------------------
--------------------编程问答--------------------
<%@ 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>
可这个是后台做的 --------------------编程问答--------------------
您的意思,把控件换成panel,在Panel下面动态添加Literal吗? --------------------编程问答-------------------- 直接这样就可以了啊。。
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里面去了 --------------------编程问答-------------------- --------------------编程问答--------------------
果然可以了。谢谢。
补充:.NET技术 , ASP.NET