- カタナ
- 大ベテラン
- 会議室デビュー日: 2006/05/25
- 投稿数: 110
|
投稿日時: 2008-01-21 14:24
いつもお世話になります。現在ASP.NET2.0を使用して開発を行っております。
やりたいことは、GridViewのある列の内容を取得してメッセージを表示したいのですが、できません。具体的に困っているのは次の2点です。
- GridView1_RowCreatedイベントにClientIDを取得するプログラムを記述するとGridView1_SelectedIndexChangedイベントに入らなくなる。
- 選択した列の内容が警告ダイアログに表示されない
具体的なコードは次のようなものになります。よろしくご教授お願い致します。
コード: |
|
'緯度を取得して、警告ダイアログを表示
Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
'↓※A:この行を追加するとSelectedIndexChangedイベントが起きなくなります
Dim latitudeID As String = e.Row.Cells(GridViewCol.Latitude).ClientID
Dim button As Button = CType(e.Row.Cells(GridViewCol.EditButton).FindControl("btnEdit"), Button)
button.Attributes.Add("onclick", "window.alert(document.getElementById('" & latitudeID & "').value)")
End Sub
'グリッドビューが選択された場合
Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
Dim dv As DataView
dv = Me.SqlDataSource1.Select(DataSourceSelectArguments.Empty)
'取得した内容をテキストボックスに表示する
Me.lblFacilityId.Text = dv(0)("列1")
:
:
End Sub
|
出力されたHTMLはつぎのようなものになります。
※B:<td id="ctl00">の内容をwindow.alert(document.getElementById('ctl00').value)でダイアログを表示したいのですが、「undefined」になってしまいます。
コード: |
|
<input type="submit" name="btnEdit" value="編集する" onclick="window.alert(document.getElementById('ctl00').value);" id="btnEdit" />
</td><td>
<input type="submit" name="Button1" value="削除する" onclick="return confirm('本当に削除しても良いですか?');" id="Button1" />
</td><td id="ctl00">1111111.2321</td><td>2222222.3241</td>
|
|
- pitfall
- 会議室デビュー日: 2007/12/05
- 投稿数: 14
- お住まい・勤務地: 東京都
|
投稿日時: 2008-01-21 14:43
window.alert(document.getElementById('ctl00').innerHTML)にするとどうなりますか?
|
- カタナ
- 大ベテラン
- 会議室デビュー日: 2006/05/25
- 投稿数: 110
|
投稿日時: 2008-01-21 15:10
pitfallさん返信ありがとうございます。
コード: |
|
button.Attributes.Add("onclick", "window.alert(document.getElementById('" & latitudeID & "').innerHTML)")
|
にすることで2つの問題の内、
- GridView1_RowCreatedイベントにClientIDを取得するプログラムを記述するとGridView1_SelectedIndexChangedイベントに入らなくなる。
- 選択した列の内容が警告ダイアログに表示されない
Bの問題は解決することができました。本当にありがとうございます。
Aは何が原因なのでしょうか?未だに調査中です。よろしくご享受下さい。
|
- pitfall
- 会議室デビュー日: 2007/12/05
- 投稿数: 14
- お住まい・勤務地: 東京都
|
投稿日時: 2008-01-21 15:37
A.の「イベントに入らなくなる」とはイベント自体が起こらない、ブレイクポイントを設定してもブレイクされない、ということですか?
私の環境で簡単にソースを書いてみましたが再現しませんでした。
|
- カタナ
- 大ベテラン
- 会議室デビュー日: 2006/05/25
- 投稿数: 110
|
投稿日時: 2008-01-21 16:19
度々、返信ありがとうございます。その通りです。イベントが次の順番で行われますが、SelectedIndexChangedイベントに入りません。
1.編集するボタンを押す
↓
2.window.alertが実行される。
↓
3.GridView1_RowCreated
↓
4.Page_Load
コード: |
|
Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
'' データ行ではない場合は、何もしない
If Not e.Row.RowType = DataControlRowType.DataRow Then
Exit Sub
End If
'Dim latitudeID As String = e.Row.Cells(GridViewCol.Latitude).ClientID
'Dim button As Button = CType(e.Row.Cells(GridViewCol.EditButton).FindControl("btnEdit"), Button)
'button.Attributes.Add("onclick", "window.alert(document.getElementById('" & latitudeID & "').innerHTML)")
End Sub
|
ただ上記のようにClientIDを取得している個所をコメントにすると
1.編集するボタンを押す
↓
2.GridView1_RowCreated
↓
3.Page_Load
↓
4.GridView1_SelectedIndexChanged
とSelectedIndexChangedイベントに入るのですが、なぜこのような事になるのでしょうか?
|
- カタナ
- 大ベテラン
- 会議室デビュー日: 2006/05/25
- 投稿数: 110
|
投稿日時: 2008-01-21 16:21
申し訳ありません。ご質問に答えていないかもしれないので、追伸します。
イベント自体が起きません。ブレイクポイントを設定してもブレイクされません。
|
- pitfall
- 会議室デビュー日: 2007/12/05
- 投稿数: 14
- お住まい・勤務地: 東京都
|
投稿日時: 2008-01-21 17:50
すみませんが、aspxファイルのGridView1の部分のHTMLソースを記載していただけますか?
|
- カタナ
- 大ベテラン
- 会議室デビュー日: 2006/05/25
- 投稿数: 110
|
投稿日時: 2008-01-21 17:53
度々ありがとうございます。
HTMLソースは次のようになっております。
コード: |
|
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333"
GridLines="None" AllowPaging="True" AllowSorting="True" EmptyDataText="データが1件も登録されていません。" DataKeyNames="主キー">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EditRowStyle BackColor="#999999" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:BoundField DataField="運行路線系統ID" HeaderText="運行路線系統ID" />
<asp:BoundField DataField="駅停留所ID" HeaderText="駅停留所ID" />
<asp:BoundField DataField="運行路線系統名称" HeaderText="運行路線系統名称" />
<asp:BoundField DataField="駅停留所名称" HeaderText="駅停留所名称" />
<asp:BoundField DataField="時間" HeaderText="時間" />
<asp:CommandField ButtonType="Button" SelectText="編集する" ShowSelectButton="True" />
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CausesValidation="False" CommandName="Delete"
OnClientClick="return confirm('本当に削除しても良いですか?')" Text="削除する" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
|
|