トップ回答者
GridViewの項目の値によって表示されるボタン名を切り替えたい

質問
-
GridViewで同じ行の値によってボタンに表示されるテキストを「無」、「保留」、「作成前」、「承認」と表示されるように切り替えを行いたいのですが他のフィールドの値の参照方法がわかりません。
参照したいフィールドはTemplateで別のSQLとして設定されていて参照したいフィールドのIDは「ssid」です。PAGE_LOADイベントプロシージャで設定されています。
この「ssid」フィールドの値によってボタンの名称をSelect case文によって
切り替えて作成したいと思っています。
回答の方宜しくお願い致します。
<asp:GridView ID="gvWorkList" DataSourceID="dsWorks" runat="server" AutoGenerateColumns="false" >
<Columns >
<asp:TemplateField meta:resourcekey="TemplateFieldResource1" ItemStyle-HorizontalAlign="Left" HeaderText="モニレポ作成" >
</asp:TemplateField>
<asp:TemplateField meta:resourcekey="TemplateFieldResource1" HeaderText="経費作成" >
<ItemTemplate >
<%
Select Case ここでitemTemplateのフィールドの値を取得したいのですがGridViewのフィールド名の取得の仕方がわかりません。
Case "10"
%>
<asp:Button ID="btSelect1" runat="server" Text='無' OnCommand="selWflInstance" CommandArgument='<%# "g" & Cint(Page.Request.QueryString("GRPID")).ToString("0000") & "/p" & Cint(Page.Request.QueryString("PRTID")).ToString("0000") & "/" & "/input/"'></asp:Button>
<%
Case "20"
%>
<asp:Button ID="btSelect2" runat="server" Text='作成前' OnCommand="selWflInstance" CommandArgument='<%# "g" & Cint(Page.Request.QueryString("GRPID")).ToString("0000") & "/p" & Cint(Page.Request.QueryString("PRTID")).ToString("0000")></asp:Button>
<%
Case "30"
%>
<asp:Button ID="btSelect3" runat="server" Text='保留' OnCommand="selWflInstance" CommandArgument='<%# "g" & Cint(Page.Request.QueryString("GRPID")).ToString("0000") & "/p" & Cint(Page.Request.QueryString("PRTID")).ToString("0000") ></asp:Button>
<%
Case "40"
%>
<asp:Button ID="btSelect4" runat="server" Text='作成済' OnCommand="selWflInstance" CommandArgument='<%# "g" & Cint(Page.Request.QueryString("GRPID")).ToString("0000") & "/p" & Cint(Page.Request.QueryString("PRTID"))></asp:Button>
<%
Case "50"
%>
<asp:Button ID="btSelect5" runat="server" Text='承認' OnCommand="selWflInstance" CommandArgument='<%# "g" & Cint(Page.Request.QueryString("GRPID")).ToString("0000") & "/p" & Cint(Page.Request.QueryString("PRTID")).ToString("0000")> </asp:Button>
<%
Case Else
End Select
%>
</ItemTemplate>
</asp:TemplateField>
</Columns><RowStyle HorizontalAlign="Center" />
</asp:GridView>
回答
-
テンプレートの中に作成するボタンの名前とCommandArgumentの値が切り替えられればいいんですかね。
http://dotnetfan.org/blogs/dotnetfanblog/articles/692.aspx
これが参考になるかも。
この場合はボタンを1つだけテンプレートに追加しておいて、その名前の部分とCommandArgumentの部分をカスタムバインドにする。
で、2つのカスタムバインドそれぞれで"ssid"の値を引数にしてpublicなメソッドを呼び出し、"ssid"の値によって返す文字列を切り替えてやる。
そんな方法でできるのではないでしょうか。
すべての返信
-
テンプレートの中に作成するボタンの名前とCommandArgumentの値が切り替えられればいいんですかね。
http://dotnetfan.org/blogs/dotnetfanblog/articles/692.aspx
これが参考になるかも。
この場合はボタンを1つだけテンプレートに追加しておいて、その名前の部分とCommandArgumentの部分をカスタムバインドにする。
で、2つのカスタムバインドそれぞれで"ssid"の値を引数にしてpublicなメソッドを呼び出し、"ssid"の値によって返す文字列を切り替えてやる。
そんな方法でできるのではないでしょうか。