动态往Panel 里面添加控件问题

wx8849 2011-06-10 05:14:33

DataSet dsSeries = SysConfigSeriesManager.GetInstance().GetSeriesDs();
pnlSeries.Controls.Add(new LiteralControl("<table ID='tdspecification' name='tdspecification' width='100%' class='tbl' cellspacing='1' cellpadding='2' border='0'>"));
pnlSeries.Controls.Add(new LiteralControl("<tr>"));
foreach(DataRow dr in dsSeries.Tables[0].Rows)
{
pnlSeries.Controls.Add(new LiteralControl("<td>"));
SortedList dsColor = SysConfigSeriesManager.GetInstance().GetSeriesItemList((int)dr["SysNo"]);
List<ConfigSeriesItemInfo> l1 = new List<ConfigSeriesItemInfo>();
foreach (ConfigSeriesItemInfo item in dsColor.Values)
{
l1.Add(item);
}
DropDownList ddlColor = new DropDownList();
Label lblColor = new Label();
lblColor.ID = i.ToString();
lblColor.Text = dr["SeriesName"].ToString() + ":";
ddlColor.ID = "ddl" + dr["SysNo"];
ddlColor.DataSource = l1;
ddlColor.DataTextField = "ItemName";
ddlColor.DataValueField = "SysNo";
ddlColor.DataBind();
ddlColor.Items.Insert(0, new ListItem(AppConst.AllSelectString, AppConst.IntNull.ToString()));
pnlSeries.Controls.Add(lblColor);
pnlSeries.Controls.Add(ddlColor);
pnlSeries.Controls.Add(new LiteralControl(" "));
pnlSeries.Controls.Add(new LiteralControl("</td>"));
}
if (!bIsbIsPostBack)
{
pnlSeries.Controls.Add(new LiteralControl("<td>"));
Button btnAdd = new Button();
btnAdd.ID = "btnAdd";
btnAdd.Text = "添加";
btnAdd.Attributes.Add("onclick", "AddSpecification()");
pnlSeries.Controls.Add(btnAdd);
pnlSeries.Controls.Add(new LiteralControl("</td>"));
}
else
{
pnlSeries.Controls.Add(new LiteralControl("<td>"));
pnlSeries.Controls.Add(new LiteralControl("<input id='DelSpecification' onclick='AddSpecification()' CssClass='btnCssl' type='button' value='删除' />"));
pnlSeries.Controls.Add(new LiteralControl("</td>"));
}
pnlSeries.Controls.Add(new LiteralControl("</tr>"));
pnlSeries.Controls.Add(new LiteralControl("</table>"));
i++;


这是页面加载前,
我现在要点击 添加按钮后在添加一行,应该怎么办
...全文
345 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lml926it 2011-06-13
  • 打赏
  • 举报
回复
把它放在第一次加载的方法里面
wx8849 2011-06-13
  • 打赏
  • 举报
回复
没人么?
wx8849 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 flyerwing 的回复:]
panel1.controls.add( new somecontrol())
[/Quote]

能说明白点吗?
flyerwing 2011-06-13
  • 打赏
  • 举报
回复
panel1.controls.add( new somecontrol())
wx8849 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wxr0323 的回复:]
我现在要点击 添加按钮后在添加一行,应该怎么办

尝试jquery 来添加行吧
[/Quote]

这个方法也是需要页面有table才可以,我的table要根据数据库的字段来自动生成的~有没有其他办法
怎么来这一出 2011-06-12
  • 打赏
  • 举报
回复
可以从后台生成,用StringBuilder输出到Literal控件里面。操作的话,可用WebService实现
hch126163 2011-06-11
  • 打赏
  • 举报
回复
js 操作吧

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>js 操作table</title>

<script type="text/javascript">

var tb;
var lastIndex=0;
function AddSignRow()
{

tb=tb|| document.getElementById("SignFrame");
var tr=tb.insertRow(tb.rows.length);
lastIndex++;
if(document.all)
{
var td;
var i=0;
td=tr.insertCell(i++);
td.innerHTML=lastIndex;
for(;i<=5;i++){
td=tr.insertCell(i);
td.innerHTML="<input type=text />";
}
td=tr.insertCell(i);
td.innerHTML="<input type='button' value='删除' onclick='delRow(this)' />";
}else{

tr.innerHTML = "<td >"+lastIndex+"</td><td ><input type=text /></td><td ><input type=text /></td><td ><input type=text /></td><td ><input type=text /></td><td ><input type=text /></td><td><input type='button' value='删除' onclick='delRow(this)' /></td>";
}
}
function ClearAllSign()
{
tb=tb|| document.getElementById("SignFrame");
var inputs=tb.getElementsByTagName("input");
for(var i=0;i<inputs.length;i++){
if(inputs[i].type.toLowerCase()=='text'){
inputs[i].value="";
}
}
}

function delRow(obj){
obj = getParentRow(obj);
if(obj){
obj.parentNode.removeChild(obj);
}
}

function getParentRow(obj)
{
var r = obj.parentNode;
while(r!=null && r.tagName!="TR") {
r = r.parentNode;
}
return r;
}
function DeleteAll(){
tb=tb|| document.getElementById("SignFrame");
if(document.all)
{
for(var i=tb.childNodes.length-1;i>=0;i--){
tb.removeChild(tb.childNodes[i]);
}
}else{
tb.innerHTML="";
}
lastIndex=0;
}

function disPlayCell(t,c,isDisplay)
{
c=parseInt(c);
if(t && t.rows && t.rows.length >0)
{
for(var i=0;i<t.rows.length;i++)
{
if(c<t.rows[i].cells.length)
{
t.rows[i].cells[c].style.display= isDisplay?"block":"none";
}
}
}
}




</script>
</head>
<body>
<div>
<table width="613" border="0" cellpadding="2" cellspacing="1" >
<thead id="trHeader">
<tr>
<td width="40" bgcolor="#96E0E2">序号</td>
<td width="64" bgcolor="#96E0E2">用户姓名</td>
<td width="98" bgcolor="#96E0E2">电子邮箱</td>
<td width="92" bgcolor="#96E0E2">固定电话</td>
<td width="86" bgcolor="#96E0E2">移动手机</td>
<td width="153" bgcolor="#96E0E2">公司名称</td>
<td width="57" align="center" bgcolor="#96E0E2"> </td>
</tr>
</thead>
<tbody id="SignFrame" bgcolor="#96E0E2">
</tbody>
</table>
</div>
<div>
<input type="button" value="添加参与人" onclick="AddSignRow()" />
<input type="button" value="清空" onclick="ClearAllSign()" />
<input type="button" value="删除所有" onclick="DeleteAll()" />
<input type="button" value="隐藏第一列" onclick="disPlayCell(document.getElementById('SignFrame'),0,0)" />
<input type="button" value="显示第一列" onclick="disPlayCell(document.getElementById('SignFrame'),0,1)" />
</div>

</body>

</html>



ycproc 2011-06-11
  • 打赏
  • 举报
回复
jquery添加就够了

panel添加没必要 增加了 页面的压力
子夜__ 2011-06-11
  • 打赏
  • 举报
回复
我现在要点击 添加按钮后在添加一行,应该怎么办

尝试jquery 来添加行吧
wx8849 2011-06-10
  • 打赏
  • 举报
回复
有没有能在这个基础上改的~
Lisliefor 2011-06-10
  • 打赏
  • 举报
回复
后台生成表格,干嘛不直接new Table呢?
然后可以为Table新建TableRow(这个就是tr),然后TableRow添加TableCell(td)。

何必要拼接html呢?
sxldfang 2011-06-10
  • 打赏
  • 举报
回复
因为是动态添加控件,所以每次都要执行“动态”添加,不能区分“是否回传”了吧!
wx8849 2011-06-10
  • 打赏
  • 举报
回复
现在就是点击添加按钮后前面一个TABLE就没有了

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧