0

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ビジュアライザーからわかるように、-は気にしないでください)。

ただし、ブラウザを使用してWebサイトをデバッグすると、次のようにフォームタグが最初のデータ行に表示されません。

<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>

野生の入力が存在するため、これは私のサイトの他の部分を台無しにします

お時間をいただきありがとうございます。何か提案をいただければ幸いです。

4

1 に答える 1

1

テーブル内にフォームを含める代わりに、JSを使用してページの他の部分に非表示のフォームを送信することで解決しました。

于 2012-10-30T10:01:38.763 に答える