- 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 は便利です。
他のものにも利用できました。
多くの御教授のお陰で解けそうです。
ありがとうございました。
|