テーブルの各行の最後に 2 つのリンク ("href") を追加したユーザーのリストがあります。1 つは "update" ユーザー用、2 番目は "delete" ユーザー用です。したがって、ユーザーのIDを取得し、別のフィールドを「true」に設定し、これらの値を以前に作成したフォーム(2つの「非表示」フィールドのみのフォーム)に挿入するjavascript関数への呼び出しを追加したことを有効にします。関数は、サーバー部分 (asp.net コード) への submit() 操作をアクティブにしました。
確認したところ、submit() 操作は問題なく動作しました (respons.write("-----")... で確認しました)。
しかし、送信ボタンの値を尋ねることで IsPost 内の送信フォーム ボタンを認識する方法を知っています (例: if(Request.Form["ExpertButton"]== "delete"){..some code here... .})
しかし、javascript で submit() を有効にすると、どうすれば投稿を認識できますか? 隠しフィールドの値を試してみましたが、これをキャプチャできず、ifステートメントをスキップしました....
デバッグで見つかった別の問題は、関数 submit() が発生したときにブラウザー (IE9) がエラーをスローすることです...
ユーザーコードのリスト:
foreach(var row in db.Query(displayExperts,nameOfExpert))
{
<tr>
<td class="dispExpertActScreen">@row.ExpertID</td>
<td class="dispExpertActScreen">@row.name</td>
<td class="dispExpertActScreen">@row.password</td>
<td class="dispExpertActScreen">@row.allowBonds</td>
<td class="dispExpertActScreen">@row.allowStocks</td>
<td class="dispExpertActScreen">@row.allowExchangeTraded</td>
<td class="dispExpertActScreen">@row.allowMutualFund</td>
<td class="dispExpertActScreen"><a href="#" onclick="expertToDelete('@row.ExpertID') ;return false;" style="color: #b04e4e">update</a></td>
<td class="dispExpertActScreen"><a href="#" onclick="expertToDelete('@row.ExpertID') ;return false;" style="color: #b04e4e">delete</a></td>
</tr>
}
フォーム:
<form method="post" name="deleteExpert" style="font-size: medium; margin-top: 10%" dir="rtl">
<input type="hidden" name="expertID" id="expertID" value="">
<input type="hidden" name="txtJavascriptMode" id="txtJavascriptMode" value="">
</form>
関数:
<script>
function expertToDelete(expertID) {
document.getElementById('expertID').value = expertID;
document.getElementById('txtJavascriptMode').value = 'true';
document.getElementById('deleteExpert').submit();
}
</script>
asp.net コード:
@{
var db = Database.Open("MyProjectSite");
var display="no";
var displayExperts="";
var nameOfExpert="";
var category="";
if(IsPost)
{
if(Request.Form["ExpertButton"]== "search")// this is by button!!!
{
some code.....
}
Response.Write("----");
if(Request.Form["txtJavascriptMode"] == "true")
{
var id=Request.Form["expertID"];
var deleteQuery="DELETE FROM InvestmanExperts WHERE ExpertID=@0";
db.Execute(deleteQuery,id);
}
}
db.Close();
}
別の奇妙なことは、次の行を入力したときです。
Response.Write("----"+Request.Form["txtJavascriptMode"]);
前:
if(Request.Form["txtJavascriptMode"] == "true");
Web サイトのインデントが悪いように見えますが、ユーザーの削除行は正常に機能します。なぜですか?
ありがとう...