- 題名: データグリッドで「選択」ボタンをクリックしてもSelectedIndexChangedイベントが発生しない
- 日時: 2009/03/11 15:08:18
- ID: 24172
- この記事の返信元:
- (なし)
- この記事への返信:
- [24205] Re[1]: データグリッドで「選択」ボタンをクリックしてもSelectedIndexChangedイベントが発生しない2009/03/16 0:07:28
- ツリーを表示
とりあえず以下のコードで試してみてください。
take さんの環境でポストバックイベント、SelectedIndexChangedイベントは発生しますでしょうか?
# VWD2008(.NET2.0)で書いたので、そのままでは動かないかもしれません。そのときは適宜修正してください。
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="DataGridSelectedIndexChangedTest.aspx.vb"
Inherits="DataGridSelectedIndexChangedTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>無題のページ</title>
</head>
<body>
<form id="form1" runat="server">
<asp:DataGrid ID="DataGrid1" runat="server">
<Columns>
<asp:ButtonColumn ButtonType="PushButton" CommandName="select" HeaderText="ボタン"
Text="ボタン"></asp:ButtonColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
Imports System.Data
Partial Class DataGridSelectedIndexChangedTest
Inherits System.Web.UI.Page
Implements IPostBackEventHandler
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
If Me.IsPostBack = False Then
Me.DataGrid1.DataSource = Me._createDataSource
Me.DataGrid1.DataBind()
End If
Dim i As Integer = 0
For i = 0 To Me.DataGrid1.Items.Count - 1
Me.DataGrid1.Items(i).Cells(0).Attributes.Add("onclick", _
Me.Page.GetPostBackEventReference(Me, i.ToString))
Next
MyBase.OnLoad(e)
End Sub
Private Function _createDataSource() As DataTable
Dim dt As New DataTable
dt.Columns.Add("列1", GetType(String))
dt.Columns.Add("列2", GetType(String))
Dim i As Integer = 0
For i = 0 To 10
dt.Rows.Add("データ−" + i.ToString, "メモ−" + i.ToString)
Next
Return dt
End Function
Protected Sub DataGrid1_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles DataGrid1.SelectedIndexChanged
MsgBox("SelectedIndexChanged", MsgBoxStyle.OkOnly, "サーバーサイド")
End Sub
Public Sub RaisePostBackEvent1(ByVal eventArgument As String) _
Implements System.Web.UI.IPostBackEventHandler.RaisePostBackEvent
MsgBox("RaisePostBackEvent−" + eventArgument, MsgBoxStyle.OkOnly, "サーバーサイド")
End Sub
End Class
分類:[ASP.NET]
ASP.NETの初心者です。
DataGrid1をWebForm1に配置し、プロパティビルダによって選択ボタンを
追加しました。
テキスト:選択
コマンド名:Select
ボタンの種類:PushButton
そして、Page_LoadイベントでデータグリッドをDataBindし、DataGrid1の
SelectedIndexChangedイベントを記述しました。
この状態で実行してみると、DataGrid1には、「選択」ボタンが表示され
データも表示されます。
しかし、「選択」ボタンをクリックしても、SelectedIndexChangedイベントが
発生しません。
SelectedIndexChangedイベントにブレイクポイントを設定してもSelectedIndexChangedイベントが発生している気配がありません。
何が問題なのか、さっぱり分かりません。
何か必要な処理があるのでしょうか?
もし、何か必要な処理、あるいは確認しなければいけないことが
ありましたら教えてください。
よろしくお願い致します。