为什么不能从后面的代码(vb.net)中读取HTML表中的行?

时间:2014-01-28 03:57:53

标签: javascript html vb.net dom html-table

我有一个HTML表格,并通过按钮的onclick事件使用Javascript插入一行。

This is my table

这是我的代码。

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成功地向表中添加行。

为什么代码隐藏只读取标题行?缺少什么?

请询问您是否需要我提供更多信息。

1 个答案:

答案 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#),请大声说出:)