我有一个HTML表格,并通过按钮的onclick
事件使用Javascript插入一行。
这是我的代码。
HTML:
<!-- language: lang-html -->
<table id="PopTable" class="imagetable" runat = "server" align="center">
<tr>
<th></th>
<th>ShipTo</th>
<th>CustName</th>
<th>Alamat</th>
<th>Dari</th>
<th>Ke</th>
</tr>
</table>
使用Javascript:
function AddRow(Shipid,custname, grup, valid, alamat)
{
var temp11;
valid = "YES";
for (var i = 0; i < arrloc.length; i++)
{
temp11 = arrloc[i];
if (Shipid == temp11){ valid = "No" };
}
if (valid == "YES"){
var table = document.getElementById("PopTable");
var row = table.insertRow(1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
var cell6 = row.insertCell(5);
if (grup == "")
{
var element2 = document.createElement("select");
var option1 = document.createElement("option");
option1.innerHTML = "DK";
option1.value = "1";
element2.add(option1, null);
var option2 = document.createElement("option");
option2.innerHTML = "LK";
option2.value = "2";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LJ";
option2.value = "3";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LD";
option2.value = "4";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LP";
option2.value = "5";
element2.add(option2, null); }
else if (grup == "DK")
{
var element2 = document.createElement("select");
var option1 = document.createElement("option");
option1.innerHTML = "LK";
option1.value = "1";
element2.add(option1, null);
var option2 = document.createElement("option");
option2.innerHTML = "LJ";
option2.value = "2";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LD";
option2.value = "3";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LP";
option2.value = "4";
element2.add(option2, null);}
else if (grup == "LK")
{
var element2 = document.createElement("select");
var option1 = document.createElement("option");
option1.innerHTML = "DK";
option1.value = "1";
element2.add(option1, null);
var option2 = document.createElement("option");
option2.innerHTML = "LJ";
option2.value = "2";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LD";
option2.value = "3";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LP";
option2.value = "4";
element2.add(option2, null);}
else if (grup == "LJ")
{
var element2 = document.createElement("select");
var option1 = document.createElement("option");
option1.innerHTML = "DK";
option1.value = "1";
element2.add(option1, null);
var option2 = document.createElement("option");
option2.innerHTML = "LK";
option2.value = "2";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LD";
option2.value = "3";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LP";
option2.value = "4";
element2.add(option2, null);}
else if (grup == "LD")
{
var element2 = document.createElement("select");
var option1 = document.createElement("option");
option1.innerHTML = "DK";
option1.value = "1";
element2.add(option1, null);
var option2 = document.createElement("option");
option2.innerHTML = "LJ";
option2.value = "2";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LK";
option2.value = "3";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LP";
option2.value = "4";
element2.add(option2, null);}
else if (grup == "LP")
{
var element2 = document.createElement("select");
var option1 = document.createElement("option");
option1.innerHTML = "DK";
option1.value = "1";
element2.add(option1, null);
var option2 = document.createElement("option");
option2.innerHTML = "LJ";
option2.value = "2";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LD";
option2.value = "3";
element2.add(option2, null);
var option2 = document.createElement("option");
option2.innerHTML = "LK";
option2.value = "4";
element2.add(option2, null);}
var element3 = document.createElement("input");
element3.type = "checkbox";
cell5.innerHTML = grup;
cell4.innerHTML = alamat;
cell6.appendChild(element2);
cell2.innerHTML = Shipid;
cell3.innerHTML = custname;
cell1.appendChild(element3);
arrloc.push(Shipid);}
}
在代码隐藏中,我尝试获取表的内容:
For i = 0 To PopTable.Rows.Count
shipid = PopTable.Rows(1).Cells(1).InnerText
'shipid = PopTable.Rows(1).Cells(1).innerhtml -- i also try this
stringsql = "insert into cs_graph_ubah_dklk_log (shipid, dklk_awal, dklk_ubah, tgl_ubah, user_name, flag_proses, mid ) values ('" & shipid & "', '" & dklk_awal & "','" & dklk_ubah & "', sysdate , '" & user & "', 1, cs_graph_ubah_dklk_seq.nextval ) "
dtsql = SPKOraConnGetDataWS.CreateDataSet(stringsql)
Next
我尝试通过Javascript插入HTML表行,但在VB.NET中,结果是rows.count
只有1行,而行只是标题。为什么会这样?在客户端,Javascript成功地向表中添加行。
为什么代码隐藏只读取标题行?缺少什么?
请询问您是否需要我提供更多信息。
答案 0 :(得分:2)
主要原因可以通过Amir Sherafatian的评论邮寄出来:
创建网站时,将呈现所有html - 具有runat =“server”属性的元素在页面执行期间生成服务器端的1:1对象。
请注意,当html写入客户端时页面执行结束,然后除非您将一些数据存储在Cache / Session / ViewState / cookies或任何其他持久存储中,否则所有关于呈现页面的数据都会在Web服务器上丢失。
当客户端点击提交时,页面状态从网页上的那些持久性存储和输入中恢复(这基本上是一个表单,因此每个回发都会将所有输入/选择/隐藏字段发送回服务器)想象一下,用户使用控制台通过自己的java脚本修改页面 - 它无法被服务器接受。 html对回发上的Web服务器没有任何意义。唯一的通信方式是通过从表单字段映射的回发属性。
任何其他非输入字段/隐藏字段的对象都是从aspx / html(在您的服务器上)重新开始,在开始页面执行的某个地方。
您的代码只能看到标题行,因为在表格中只定义了标题行,从中构建了页面的状态。
如果你想实现你的目标,你需要用runat = server定义至少一个隐藏字段“当你用JavaScript添加/删除行时你要添加/删除数据。它的数据将被发送为服务器的表单回发参数。在那里你可以像访问隐藏字段一样访问它(因为我解释了隐藏字段值将从回发参数重建),读取数据,解析它并做任何你想做的事。
如果您需要示例代码(ASP.Net C#),请大声说出:)