今回は、ASP.NETにおけるList View内のButtonコントロールでCommand Argumentを使用した複数の引数を受け渡す方法について書いていきたいと思います。
ボタンをクリックした際にサーバー側にいくつかの情報をまとめて送信したい時に使うと便利だと思います。
Command Argumentの設定と受渡し方法
まずはじめに、Command Argumenteに設定した引数を受け渡す方法がこちらです。
※サーバー側はVB.netで記述しています。
それぞれのファイルの記述内容についていくつか補足を書いておきます。
・aspxファイル
<asp:ListView ID="ListView" runat="server" OnItemCommand="lnkButtonCommand">
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
</LayoutTemplate>
<ItemTemplate>
<asp:LinkButton ID="Button" runat="server" CommandName="ButtonArg"
CommandArgument='<%#Eval("value")%>' Text="Button1" OnItemCommand="lnkButton_Click"></asp:LinkButton>
</ItemTemplate>
</asp:ListView>
- OnItemCommand → ListView内のButtonがクリックされた時に発生するイベント
- CommandArgument → OnItemCommandに設定したボタンクリックイベントに受け渡す値を設定する
・サーバー側
public Sub lnkButtonCommand(Byval sender As Object, Byval e As ListViewCommandEventArgs)
Dim val As String = (e.CommandArgument).ToString
'処理を書く
End Sub
- e.CommandArgument → ListViewCommandEventArgsのCommandArgumentに「aspxファイル」のCommandArgumentプロパティ値で設定した値が格納されている
引数の複数設定と受渡方法
次に、引数を複数設定して受け渡したい場合の方法についても以下に載せておきます。
・aspxファイル
<asp:ListView ID="ListView" runat="server" OnItemCommand="lnkButtonCommand">
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
</LayoutTemplate>
<ItemTemplate>
<asp:LinkButton ID="Button" runat="server" CommandName="ButtonArg"
CommandArgument='<%#Eval("value1")> + ";" +Eval("value2"%)' Text="Button1" OnItemCommand="lnkButton_Click"></asp:LinkButton>
</ItemTemplate>
</asp:ListView>
・サーバー側
public Sub lnkButtonCommand(Byval sender As Object, Byval e As ListViewCommandEventArgs)
Dim arg() As String = (e.CommandArgument).ToString.Split(';')
'処理を書く
End Sub
ここでは、aspx側でCommandArgumentの引数に";"を区切り文字として複数の引数を設定しておき、
サーバー側がその引数値(e.CommandArgument)を";"で区切って配列に格納することで複数設定した引数を取得することが出来ます。
ASP.NET おすすめ入門講座
3つのWebアプリケーションの開発を通して、ASP.NETについて基礎から学べるおすすめの入門講座がこちら☟
【入門者向け】ASP.NET MVCでWebアプリ開発のノウハウを学ぼう!