- - PR -
[ASP+VS2005(VB)] GridViewにて選択列の取得を行いたい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-01-25 10:51
thorと申します。
VS2005ProのASP.NET(VB)にて開発を行っているのですが、 教えて頂きたい事がありスレッドを立てさせて頂いた次第です。 現在、GridViewを作成し、1列目にcommandfieldを設置、 2列目にチェックボックスを設置しています。 3列目以降はDBからobjectsourceに取得した各項目をセットし表示を行っているのですが、 3列目以降を選択した場合とチェックボックスを選択した場合に、処理を分けたいのです。(3列目以降が選択された際には、別画面に遷移するようにしたいです) 「SelectedIndexChanging」イベント等で、選択された行を取得する 「selectedRow」というプロパティはあるのですが、 選択された列を取得できるプロパティは存在するのでしょうか。 知っている方おられましたらお教え頂けますよう よろしくお願いいたします。 現在のソースの一部下に記します。 Protected Sub grv_xxxx_SelectedIndexChanging(ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.GridViewSelectEventArgs) _ Handles grv_Detail.SelectedIndexChanging Dim objGrv As GridView = CType(sender, GridView) Dim igrvIndex As Integer = e.NewSelectedIndex objGrv.EditIndex = igrvIndex objGrv.DataBind() Response.Redirect("xxxx.aspx", False) End Sub Protected Sub grv_xxxx_RowCreated(ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _ Handles grv_Detail.RowCreated e.Row.Cells(0).Style.Add("display", "none") If Not e.Row.RowType = DataControlRowType.DataRow Then Exit Sub End If Dim clickEvent As String = _ String.Format("SelectedRow('{0}', '{1}')", _ e.Row.RowIndex, _ Me.grv_Detail.UniqueID) e.Row.Attributes.Add("onClick", clickEvent) e.Row.Style.Add("cursor", "hand") End Sub |
|
投稿日時: 2008-01-25 14:06
> 選択された列を取得できるプロパティは存在するのでしょうか。
GridViewには存在しません。 ご自身でGridView拡張版を作ることで実現は可能です。 (GridViewを継承したカスタムコントロールの作成) 選択列取得のポイントとしては ・__doPostbackにて選択行と選択列を渡す必要が有る (行選択のGridViewは「Select$選択行NO」の形式をした引数ですね) ・__doPostbackに独自形式の引数を渡すのですから GridViewのRaisePostBackEventメソッドをオーバーライドする必要が有る (カスタムコントロールを作成してオーバーライドする) ってところでしょうか。 【タイプミス修正】 前:「Select&選択行NO」 後:「Select$選択行NO」 [ メッセージ編集済み 編集者: くまっち 編集日時 2008-01-25 14:08 ] |
|
投稿日時: 2008-01-25 16:03
ちょっと泥臭いかもしれませんが。
SelectedRow という JavaScript の関数で行を選択状態にしているとお見受けした上での話です。 ・ページに Hidden コントロールを配置。 ・SelectedRow 関数を SelectedCell(rowIndex, columnIndex, uniqueId) のような関数に変更。(SelectedCell は columnIndex を 配置した Hidden の Value に格納する) ・SelectedCell 関数を e.Row.Cells の各 TableCell に対して出力。 そうすればポストバックの際に、Hidden コントロールの値から選択列のインデックスが取得できませんかね? [ メッセージ編集済み 編集者: THREE-ONE 編集日時 2008-01-25 16:04 ] |
1