- PR -

削除コマンドについて

投稿者投稿内容
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2009-01-19 13:55
昔、似たようなことをやったときは、こんな方法で実現しました。
(もっといい方法があると思いますが)

コード:
aspx 側:

<head runat="server">
    <title>無題のページ</title>
    <script type="text/javascript">
    function body_onload() {
        var message = document.getElementById('HiddenMessage').value;
        if (message != '') {
            alert(message);
        }
    }
    </script>
</head>
<body onload="body_onload()">
    <form id="form1" runat="server">
        <input id="HiddenMessage" runat="server" type="hidden" />
    </form>
</body>



コード:
aspx.vb 側:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

        If Me.HiddenMessage.Value <> "" Then
            Me.HiddenMessage.Value = ""
        End If

    End Sub

    Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs) _
        Handles GridView1.RowDeleting

        If レコードが残り1件の場合にTrueを返すFunction() Then
            Me.HiddenMessage.Value = "レコードは残り1行です。削除できません。"
            e.Cancel = True
        End If

    End Sub



引用:

ごん太さんの書き込み (2009-01-19 09:28) より:

System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE=""JavaScript"">" & vbCrLf)
System.Web.HttpContext.Current.Response.Write("alert(""" & Message & """)" & vbCrLf)
System.Web.HttpContext.Current.Response.Write("</SCRIPT>")


この方法は、<html>〜</html> の外側にスクリプトが追加されますし、alert() を表示している間は画面が表示されないので、あまりよろしくないように思います。
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2009-01-19 14:12
  • ポストバック時に body の onload で呼ぶ alert 表示 JavaScript 関数を RegisterClientScript で生成する。
  • ポストバック時に alert を表示する JavaScript を RegisterStartupScript でを生成する。
  • ポストバックはせず JavaScript の DOM で Table の Row の数を数えて alert を表示。

というのはどうでしょうか。

[ メッセージ編集済み 編集者: King 編集日時 2009-01-19 14:15 ]
ごん太
大ベテラン
会議室デビュー日: 2002/07/30
投稿数: 182
お住まい・勤務地: 森の中
投稿日時: 2009-01-20 08:49
rainさんの書き込み (2009-01-19 13:55) より:
コード:

aspx 側:

<head runat="server">
<title>無題のページ</title>
<script type="text/javascript">
function body_onload() {
var message = document.getElementById('HiddenMessage').value;
if (message != '') {
alert(message);
}
}
</script>
</head>
<body onload="body_onload()">
<form id="form1" runat="server">
<input id="HiddenMessage" runat="server" type="hidden" />
</form>
</body>



コード:

aspx.vb 側:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

If Me.HiddenMessage.Value <> "" Then
Me.HiddenMessage.Value = ""
End If

End Sub

Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs) _
Handles GridView1.RowDeleting

If レコードが残り1件の場合にTrueを返すFunction() Then
Me.HiddenMessage.Value = "レコードは残り1行です。削除できません。"
e.Cancel = True
End If

End Sub




なるほど!
今までこのように対応していた場面が多々あり、勉強になりました。

[ メッセージ編集済み 編集者: ごん太 編集日時 2009-01-20 08:51 ]
ぱると
会議室デビュー日: 2006/12/21
投稿数: 17
投稿日時: 2009-01-20 09:17
Hiddenを用意しなくて良い方法です
検証していないのでスペルミスとかあるかも…。
コード:
aspx 側:


<head runat="server">
<title>無題のページ</title>
<script type="text/javascript">
function body_onload() {
var message = '<%= dispMsg %>';
if (message != '') {
alert(message);
}
}
</script>
</head>
<body onload="body_onload()">
<form id="form1" runat="server">
</form>
</body>


コード:
aspx.vb 側:


Protected dispMsg as String = String.Empty

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

End Sub

Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs) _
Handles GridView1.RowDeleting
If レコードが残り1件の場合にTrueを返すFunction() Then
dispMsg = "レコードは残り1行です。削除できません。"
e.Cancel = True
End If
End Sub



編集:var message時にシングルコーテーション入れ忘れ
編集すると勝手に改行が!?

[ メッセージ編集済み 編集者: ぱると 編集日時 2009-01-20 09:21 ]
ムラ
ベテラン
会議室デビュー日: 2008/12/19
投稿数: 51
投稿日時: 2009-01-20 11:59
e.Cancel = True は便利です。

他のものにも利用できました。

多くの御教授のお陰で解けそうです。

ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)