|
分類:[.NET 全般]
環境:vb.net
gridviewでデータを表示する際、あるセルをtemplateFieldで作成し、ボタンコントロールを置いています。 しかし、gridviewを生成する際(gridviewのRowDataBound)にRowspan等を使いセルの表示方法をいじっているせいか、最終行にあるボタンをクリック時にrowCreatedイベントが発生しません。
〜.aspxでの定義〜(TemplateFieldのみ記述します) <asp:TemplateField> <ItemStyle HorizontalAlign="Center" Width="80px"/> <ItemTemplate> <asp:button ID="btnButton1" runat="server" CommandName="Select" CommandArgument="1"/> </ItemTemplate> </asp:TemplateField>
〜.vbで行っていること〜 ・gridviewにDetabind() ・gridviewのRowDataBoundイベントで行を追加(rowspan=2の項目を作成)
Protected Sub grd_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then
'値を取得 Dim strValue As String = e.Row.Cells(12).Text '二行目に表示する項目を一行目から非表示にする For i = 12 To 17
'非表示にする e.Row.Cells(i).Style.Add("display", "none")
Next
'セルにRowSpan = 2 を追加 For i = 0 To 11 If i <> 3 Then e.Row.Cells(i).RowSpan = 2 End If Next
'追加するセル作成 Dim newCell As TableCell = New TableCell() '値を格納 newCell.Controls.Add(New LiteralControl(strValue))
'下段に表示 Dim table As Table = e.Row.Parent Dim row As GridViewRow = New GridViewRow(-1, -1, DataControlRowType.DataRow, DataControlRowState.Normal)
'各セルを行に追加 row.Cells.Add(newCell) '行追加 table.Rows.Add(row) End If End Sub
templatefieldで作成した「btnButton1」というコントロールは上段にあります。 しかし最終行(例:3レコードdbから取得したとしたら、3レコード目)のボタンクリック時のイベントが発生しません。。。
また、上段に「btnButton1」というコントロールを作成し、さらに下段に「btnButton2」というコントロールをRowDataBoundイベントで作成し、こっちの方もrowCommandイベントで拾いたいのですが「btnButton2」の方は最上段しかイベントが拾えません。
色々と調べてみたのですが原因が分かりません、どなたかアドバイス等いただけ無いでしょうか??
長々と失礼します。。
|