【发布时间】:2021-08-20 10:08:48
【问题描述】:
我制作了根据数据计数生成表格行和列的脚本。然后我制作了脚本:
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("");
sb.Append("var row = document.createElement('TR');");
sb.Append("var a = '");
for (int i = 0; i < dataVar.Count; i++)
{
Counter = i;
int fileNo = Convert.ToInt32(dataVar[i].Replace("picUrl", ""));
string filename = Request.Params["picUrl" + fileNo];
sb.Append("<tr>" +
"<td>" +
"<img src=\"" + ResolveUrl(filename) + "\" width=\"100px\" height=\"100px\" />" +
"<input type=\"text\" name=\"picUrl" + Counter + "\" id=\"gbr" + Counter + "\" value=\"" + filename + "\" class=\"d-none\" /></td>" +
"<td>" +
"<select name=\"resType" + Counter + "\" id=\"resType" + Counter + "\" class=\"form-control form-control-sm\">" +
"<option value=\"\">Parkir</option>" +
"<option value=\"0\">Other</option>" +
"<option value=\"1\">Bensin</option>" +
"<option value=\"2\">E-toll</option>" +
"<option value=\"3\">Parkir</option>" +
"</select>" +
"</td>" +
"<td><input type=\"text\" name=\"amount" + Counter + "\" id=\"txtInput" + Counter + "\" class=\"form-control form-control-sm\" /></td>" +
"<td><input id=\"Button" + Counter + "\" name=\"button" + Counter + "\" type=\"button\" value=\"Remove\" onclick = \"RemoveFileUpload(this)\" /></td>" +
"</tr>");
}
sb.Append("';");
sb.Append("row.innerHTML = a; var s = document.getElementById(\"AddRow\"); s.appendChild(a); counter++; ");
ClientScript.RegisterStartupScript(this.GetType(), "addRow", sb.ToString(), true);
当我在浏览器上显示它时,一些 html 元素关闭标记消失(<img /> become <img>、<input /> become <input>、</tr> 标记消失,除了最后一个等)。是错误还是有人可以帮助我吗?
【问题讨论】:
-
尽可能放回您的原始代码。您当前的代码现在没有意义,它不完整。
-
你能测试“sb.ToString()”的值吗?如果你能把它放在问题中。或者测试是否正确的html。
-
@शेखर:我做过并测试过。 sb.ToString() 适用于标准 HTML。
-
首先,尝试注册部分JS代码而不附加stringbuilder(一行带有示例数据)-您将测试JS的整个注册是否导致将JS包含在您的HTML中并且它是正确的。比,如果可行,则从附加的字符串构建器末尾发布生成的字符串,因为它可能是损坏的代码,正如您所说的那样,某些东西消失了...
-
我认为问题可能是因为 createElement 正在创建一个 TR 标签,然后它的内部 HTML 被设置为多行。不确定是什么解决方案,但它可能适用于 row = document.createElement();