js 动态生成 table的问题

dotnetsong 2008-10-21 02:38:13
我想问一下,我用js动态生成的table里面为什么不能放控件啊,如 input,或是asp.net的控件,难道不能放吗?
我的方法如下:

function CreateTable(ds)
{

  var maxRow =8;
  var maxCol = 3;
 
var aaa="test";
  var strTbody ="<table <tbody>";
  strTbody+="<tr>";
   for(var j = 0; j < maxCol; j++)
   {
   strTbody+="<td><input id=\"txt"+i+"\" type =\"text\" value ="+aaa+" /></td>";
      }
  strTbody+="</tr>";
  strTbody+="</tbody></table>";
 
  var obj = document.getElementById("tableDiv");
  obj.innerHTML = strTbody;
 

}
...全文
223 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dotnetsong 2008-10-21
  • 打赏
  • 举报
回复
非常感谢 tonyze 和wfyfngu
我试下先!!
wfyfngu 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 dotnetsong 的帖子:]
我想问一下,我用js动态生成的table里面为什么不能放控件啊,如 input,或是asp.net的控件,难道不能放吗?
[/Quote]

不能。
因为服务器控件必须经过服务器的解析
最终生成浏览器可以解析的标准HTML代码。

楼主可以给动态生产的Table加入标准的html控件,如:
<input name="input1" id="input1" .../>
在后台页面可以通过 Request.Form["input1"] 来获取 Post 回来的值
tonyze 2008-10-21
  • 打赏
  • 举报
回复
没看清需求,丢人····
这个你自己看下···
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />

<script language="javascript">
function createTable()
{
//定义表格的变量
var table;
var tbody;
var tr;
var td;
//var textnode = document.createTextNode("Test");
//获取要生成表格的行与列
var row = document.getElementById("row").value;
var col = document.getElementById("col").value;

//row = parseInt(row);
//col = parseInt(col);
var re = new RegExp("[0-9]");
var rerow = row.match(re);
var recol = col.match(re);

if((rerow!=null)&&(recol!=null))
{
//生成指定的表格
table = document.createElement("table");
//tr = document.createElement("TR");
//td = document.createElement("TD");

document.body.insertBefore(table, null);
tbody = document.createElement("TBODY");
table.insertBefore(tbody, null);
table.id="Tablea";
table.name="Tablea";
table.width="100"
table.border="1"
table.height="100"
table.align="left"
table.onclick="Page_onclick();";
for (var i=0;i<row;i++)
{
tr = tbody.insertRow(-1);
for(var j=0;j<col;j++)
{
td = tr.insertCell();
td.id = 'A_'+i+'_'+j;
td.innerHTML="第"+(i+1)+"行,第"+(j+1)+"列";

}
}
}
else alert("请输入正确的行与列!")
}

</script>
</HEAD>

<BODY>
行:<input type="text" name="row" id="row" size="8" value="5">
列:<input type="text" name="col" id="col" size="8" value="6">
<input type="button" value="生成表格" onclick="createTable();">
</BODY>
</HTML>
tonyze 2008-10-21
  • 打赏
  • 举报
回复
Table t1 = new Table();

TableRow[] trList = new TableRow[dtProtal.Rows.Count];

for (int i = 0; i < dtProtal.Rows.Count; i++)
{

//添加第一列CheckBox
CheckBox[] cbList = new CheckBox[dtProtal.Rows.Count];
cbList[i] = new CheckBox();
cbList[i].Text = dtProtal.Rows[i][2].ToString();
cbList[i].ID = "cbID" + i;
if (Convert.ToBoolean(dtProtal.Rows[i][3]))
{
cbList[i].Checked = true;
}
TableCell cellName = new TableCell();
cellName.Controls.Add(cbList[i]);

//添加第二列HtmlSelect
HtmlSelect[] selectList = new HtmlSelect[dtProtal.Rows.Count];
selectList[i] = new HtmlSelect();
selectList[i].ID = "select" + i;
selectList[i].Value = dtProtal.Rows[i][1].ToString();
selectList[i].Attributes.Add("style", "width:80px;");
selectList[i].Attributes.Add("runat", "server");

ListItem itemL = new ListItem();
itemL.Text = "左列";
itemL.Value = "0";
ListItem itemM = new ListItem();
itemM.Text = "中列";
itemM.Value = "1";
ListItem itemR = new ListItem();
itemR.Text = "右列";
itemR.Value = "2";

if (Convert.ToChar(dtProtal.Rows[i][1]) == '0')
itemL.Selected = true;
if (Convert.ToChar(dtProtal.Rows[i][1]) == '1')
itemM.Selected = true;
if (Convert.ToChar(dtProtal.Rows[i][1]) == '2')
itemR.Selected = true;

if (cbSystem.Checked)
selectList[i].Items.Add(itemR);
else
{
selectList[i].Items.Add(itemL);
selectList[i].Items.Add(itemM);
selectList[i].Items.Add(itemR);
}
TableCell cellType = new TableCell();
cellType.Controls.Add(selectList[i]);

//添加第三列HiddenField列
HiddenField[] hiddenList = new HiddenField[dtProtal.Rows.Count];
hiddenList[i] = new HiddenField();
hiddenList[i].ID = "hidden" + i;
hiddenList[i].Value = dtProtal.Rows[i][4].ToString();
TableCell cellHidden = new TableCell();
cellHidden.Controls.Add(hiddenList[i]);

//实例化row,添加列
trList[i] = new TableRow();
trList[i].Controls.Add(cellName);
trList[i].Controls.Add(cellType);
trList[i].Controls.Add(cellHidden);
t1.Controls.Add(trList[i]);
}
Panel1.Controls.Add(t1);
tonyze 2008-10-21
  • 打赏
  • 举报
回复
我前两天做了一个,等下给你发代码
dotnetsong 2008-10-21
  • 打赏
  • 举报
回复
高手呢
dotnetsong 2008-10-21
  • 打赏
  • 举报
回复
没有 runat="server" 属性,我在后台怎么能得到它的值啊,谢谢楼上啊,能不能多指点一下!
chenshuliang 2008-10-21
  • 打赏
  • 举报
回复

function addRow()
{

//添加一行
var newTr = tableone.insertRow();

//添加3列

var newTd0 = newTr.insertCell();

var newTd1 = newTr.insertCell();

var newTd2 = newTr.insertCell();

//设置列内容和属性
newTd0.className = "LtableCopy";

newTd0.height = "25";

newTd0.align = "center";

newTd0.innerHTML = "<input type='text' name='pickname' />";

newTd1.className = "LtableCopy";

newTd1.height = "25";

newTd1.align = "center";

newTd1.innerHTML = "<input type='text' name='pickrelationship'/>";

newTd2.className = "LtableCopy";

newTd2.height = "25";

newTd2.align = "center";

newTd2.innerHTML = "<input type='text' name='picknumber' />";

}


<table id="tableone" border="1">
</table>
<input type="button" value="add" onclick="addRow()" />
ppp7p 2008-10-21
  • 打赏
  • 举报
回复
js可以动态创建DataTable,不过我也没有过,搜一下网上很多。

62,046

社区成员

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

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

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

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