- PR -

ASP.NET DATAGRID 内のtextboxをJAVASCRIPTで参照したい

1
投稿者投稿内容
大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2004-03-26 13:40
お世話になっております

ご教授願います
DATAGRIDの更新時にイベントを追加して
イベント発生時に、JAVASCRIPT にて、別ウィンドウを
表示し(window.open)ウィンドウを閉じるときに
(window.opener)にて、edititemtemplate に置いたTEXTBOXに
値を返したいのですが、指定の仕方がわかりません

window.opener.form1.datagrid1.xxxx.value と指定すると
「オブジェクトではない」と言われます

datagrid 外のTEXTBOX を指定するのは、うまくいくのですが・・・・

すみませんが、よろしくお願い致します
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-03-26 13:48
NAL-6295です。

このスレッドが参考になるでしょう。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10184&forum=7
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-03-26 14:45
過去ログ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10255&forum=7&4
大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2004-03-26 15:01
NAL-6295さん  

いつもありがとうございます。 謝謝

引用:

NAL-6295さんの書き込み (2004-03-26 13:48) より:
このスレッドが参考になるでしょう。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10184&forum=7



せっかく教えていただいたのに、ここのスレッドの意味もよく読み取ることが
できてません m(__)m

ちなみに、今やっている事は、以前に教わったコントロール取得も
使用させて頂いてます。 m(__)m

コード:
    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound

        If e.Item.ItemType = ListItemType.EditItem Then

            Dim btn_c As ImageButton = CCNT.GetControl(e.Item.Cells(3), GetType(ImageButton))
            Dim txt_c As TextBox = CCNT.GetControl(e.Item.Cells(3), GetType(TextBox))

            If btn_c Is Nothing Or txt_c Is Nothing Then
            Else
                Session("intdate") = txt_c.Text
                Dim strs As String = txt_c
                Dim strscript As String = CCNT.pop_calender_gde(strs) ーーーーー(1)

                btn_c.Attributes.Add("onclick", strscript)
            End If
        End If
    End Sub

Public Class PopCalGgrid  −−−−−−−−−−−−−−(2)
    Inherits System.Web.UI.Page

         略
    Private Sub Btn_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_ok.Click
        Dim strscript As String
        Dim strs As String = Request.Params("source")
        Dim dtmdate As Date = Calendar1.SelectedDate
        Dim typ As String

        strscript &= "<script Language=javascript>"
        '''strscript &= "window.opener.document.Form1." & strs
        strscript &= "window.opener.document.Form1.datagrid1.[3].['" & strs −−−XXXX
        strscript &= "'].value = '" & dtmdate.ToString("d") & "';"
        strscript &= "window.close();"
        strscript &= "</script>"
        Response.Write(strscript)
    End Sub
       略
End Class

Public Class CCONT
    Inherits core
    Public Function pop_calender_gde(ByVal strs As String) As String −−−−−−−−(1)
        Dim strscript As String
        strscript &= "window.open('../../共用/PopCalGgrid.aspx?source=" & strs & "'"    −−−−−−−(2)
        strscript &= ",'','Height=300,Width=290,Top=200,Left=300,dependent=yes,"
        strscript &= "Location=no,menubar=no,resizable=no,scroLLbar=no');"
        Return strscript
    End Function
End Class



XXXXにていろいろ試しますが、ランタイムエラーが出たり
VSにて、「オブジェクトでない」エラーが出てしまいます

すみません、図々しくコードを入れてしまいました
よろしければ、ご教授願います。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-03-26 15:05
引用:

七さんの書き込み (2004-03-26 15:01) より:

strscript &= "window.opener.document.Form1.datagrid1.[3].['" & strs −−−XXXX




NAL-6295です。

問題は、ここなんですね。
実際に表示されたページのHTMLを見ると分かるのですが、データグリッド内のコントロールについてユニークなID及びNameがついているので、。

strscript &= "window.opener.document.Form1.ユニークなID
とする必要があるわけです。

それを踏まえた上で、先ほど提示したスレッドを見ていただければと思います。


[ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-03-26 15:11 ]
大ベテラン
会議室デビュー日: 2003/09/16
投稿数: 193
お住まい・勤務地: 千葉県
投稿日時: 2004-03-26 16:18
todoさん ありがとうございました
 先のスレッドを書き込んでいる最中のようで
 お礼が遅くなってしまいました。

引用:

NAL-6295さんの書き込み (2004-03-26 15:05) より:

strscript &= "window.opener.document.Form1.ユニークなID
とする必要があるわけです。

それを踏まえた上で、先ほど提示したスレッドを見ていただければと思います。



ユニークIDを使用する必要がある
todoさんのスレッドで、document.・・・ の表記の仕方
以上2つを踏まえて

Dim strs As String = txt_c を
Dim strs As String = txt_c.UniqueID とし
UniqueID を取得して、
strscript &= "window.opener.document.forms[0].elements ['" & strs
strscript &= "'].value = '" & dtmdate.ToString("d") & "';"
strscript &= "window.close();"
を実行することで、うまくいきました。
ありがとうございました。

ID と UniqueID と name の違いが理解できました
ありがとうございました。

    感謝 m(__)m

todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-03-26 16:36
引用:

七さんの書き込み (2004-03-26 16:18) より:
ユニークIDを使用する必要がある
todoさんのスレッドで、document.・・・ の表記の仕方
以上2つを踏まえて


ユニークなIDとUniqueIDは別もの。
ユニークなIDで書くと
strscript &= "window.opener.document.forms[0]." & txt_c.ClientID 

# うーん。紛らわしい。

NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-03-26 16:44
NAL-6295です。

他のスレッドにも書きましたが・・・

サーバサイド←→クライアントサイド
UniqueID←→Name
ClientID←→ID

といった対応のようです。
1

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