どうするどうする、どうする~、君ならどうする~♪ ってこっちも成田さんの名曲だと思ってる人
ASP.NetのGridViewで、行にボタンを配置して、
- 管理者でログインしている画面なら表示、そうじゃないならしない
- ボタンを押したら、そのデータの情報の処理を行う
というのを実現したい時、
コーディングで書くなら、
Private Sub gvHoge_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
Handles gvHoge.RowCreated
If e.Row.RowState = DataControlRowState.Normal And e.Row.RowType = DataControlRowType.DataRow Then
Dim setBtn = DirectCast(e.Row.FindControl("btnEditPanel"), Button)
setBtn.Visible = (Session("NowUser") IsNot Nothing)
setBtn.CommandArgument = e.Row.RowIndex
End If
End Sub
と書いて、RowCommand処理で、CommandArgumentから行Index取ってきてゴニョゴニョすればいい。
でもこれを、GridViewの中で、
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnEditPanel" CommandName="Edit" runat="server" Text="編集"
CssClass="btn" Width="60px" CommandArgument='<%# Eval("RecordID") %>'
Visible='<%# session("NowUser") isnot nothing %>'/>
</ItemTemplate>
</asp:TemplateField>
と書いて、RowCommand処理で、CommandArgumentからデータKey取ってきてゴニョっても
同じように目的を達成することができるんだよね。
これは好みの問題なのかしら?
だんだん、テンプレートでいいじゃん、とか思う自分が怖いw