奇怪的HTML表格问题,第一行标签消失

时间:2012-10-29 16:30:49

标签: c# html forms html-table

我在使用C#生成HTML表时遇到问题。在每一行上,我都有一个删除按钮,用于从数据库中删除该行。

然而,它似乎不适用于第一行,我已经确定问题是第一行没有围绕它的-tag,我不知道为什么。

我正在使用类似以下代码的内容来生成表格:

// Initalize SQL connection...
string resp = ""; // Response string, used to build the html

resp += "<table id='hor-minimalist-b' summary='Product list'>";

// Display the column names as headers
resp += "<thead><tr>";
resp += "<th scope='col'>Artikel</th>";
// Use empty headers for button columns
resp += "<th scope='col'></th>"; // Remove button
foreach (DataColumn dc in ds.Tables[0].Columns)
{
    resp += "<th scope='col'>" + dc.ColumnName + "</th>";
}
resp += "</tr></thead>";

// Display the data for each row. Loop through the rows first.
resp += "<tbody>";
foreach (DataRow dr in ds.Tables[0].Rows)
{
    resp += "<tr>";
    // Then loop through the columns for the current row print them
    string artID = getArticleID(dr); // Get the primary key for row
    for (i = 1; i <= ds.Tables[0].Columns.Count; i++)
    {
        // Add additional buttons
        if (i == 2)
        {
            // Add remove button
            resp += "<td>";
                resp += "<form method='post' action='Default.aspx'>";
                    resp += "<input type='hidden' name='action' value='deleteRow' />";
                    resp += "<input type='hidden' name='rowID' value='" + artID + "' />";
                    resp += "<input type='submit' value='Ta bort' onclick=\"return confirm('Är du säker på att du vill ta bort artikel " + artID + "');\" />";
                resp +="</form>";
            resp +="</td>";
        }

        resp += "<td>" + dr[i - 1] + "</td>";
    }
    resp += "</tbody>";
    resp += "</table>";
}

结果会产生类似以下HTML的内容:

<table id="hor-minimalist-b" summary="Product list">
    -
    <thead>
        -
        <tr>
            ...
        </tr>
    </thead>
    -
    <tbody>
        -
        <tr>
            <td id="val15462_0">
                15462
            </td>
            -
            <td>
                -
                <form method="post" action="Default.aspx">
                <input type="hidden" name="action" value="deleteRow" />
                <input type="hidden" name="rowID" value="15462" />
                <input type="submit" value="Ta bort" onclick="return confirm('Är du säker på att du vill ta bort artikel 15462');" />
                </form>
            </td>
            -
            <td>
                <input value="Ändra" type="button" onclick="editArt(15462)" />
            </td>
            <td id="val15462_1">
                AX-10.535
            </td>
            <td id="val15462_3">
                Detaljspecifikt värde A
            </td>
            <td id="val15462_4">
                Detaljspecifikt värde B
            </td>
            <td id="val15462_2">
                kitten2.jpeg
            </td>
        </tr>
        -
        <tr>
            <td id="val15463_0">
                15463
            </td>
            -
            <td>
                -
                <form method="post" action="Default.aspx">
                <input type="hidden" name="action" value="deleteRow" />
                <input type="hidden" name="rowID" value="15463" />
                <input type="submit" value="Ta bort" onclick="return confirm('Är du säker på att du vill ta bort artikel 15463');" />
                </form>
            </td>
            -
            <td>
                <input value="Ändra" type="button" onclick="editArt(15463)" />
            </td>
            <td id="val15463_1">
                AX-10.536
            </td>
            <td id="val15463_3">
                Detaljspecifikt värde A
            </td>
            <td id="val15463_4">
                Detaljspecifikt värde
            </td>
            <td id="val15463_2">
                kitten3.jpg
            </td>
        </tr>
        ...
    </tbody>
</table>

注意第一行没有围绕它的表单标记。我真的不确定是什么原因引起的。

更新 我更正了上面的HTML,它没有正确粘贴。现在粘贴的是从构建HTML的服务器函数返回的字符串,其中 包含表单标记(从VS中的XML可视化工具中看到,所以不要介意-s )。

但是,当我使用浏览器调试网站时,表单标记不会出现在第一个数据行中,如下所示:

<td>
  <input type="hidden" name="action" value="deleteRow"/>
  <input type="hidden" name="rowID" value="15462"/>
  <input type="submit" value="Ta bort" onclick="return confirm('Är du säker på att du vill ta bort artikel 15462');"/>
</td>

由于存在狂野的输入信息,这会弄乱我网站的其他部分

感谢您的时间,我很感激任何建议!

1 个答案:

答案 0 :(得分:1)

通过使用JS在页面的其他部分提交隐藏表单而不是在表格中包含表单来解决它。