none
GridViewの項目の値によって表示されるボタン名を切り替えたい RRS feed

  • 質問

  •  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>

    2006年7月26日 5:51

回答

  • テンプレートの中に作成するボタンの名前とCommandArgumentの値が切り替えられればいいんですかね。

    http://dotnetfan.org/blogs/dotnetfanblog/articles/692.aspx

    これが参考になるかも。
    この場合はボタンを1つだけテンプレートに追加しておいて、その名前の部分とCommandArgumentの部分をカスタムバインドにする。
    で、2つのカスタムバインドそれぞれで"ssid"の値を引数にしてpublicなメソッドを呼び出し、"ssid"の値によって返す文字列を切り替えてやる。
    そんな方法でできるのではないでしょうか。

    2006年7月26日 6:14

すべての返信

  • テンプレートの中に作成するボタンの名前とCommandArgumentの値が切り替えられればいいんですかね。

    http://dotnetfan.org/blogs/dotnetfanblog/articles/692.aspx

    これが参考になるかも。
    この場合はボタンを1つだけテンプレートに追加しておいて、その名前の部分とCommandArgumentの部分をカスタムバインドにする。
    で、2つのカスタムバインドそれぞれで"ssid"の値を引数にしてpublicなメソッドを呼び出し、"ssid"の値によって返す文字列を切り替えてやる。
    そんな方法でできるのではないでしょうか。

    2006年7月26日 6:14
  •   どっとねっとふぁん

     なんと私のような初心者でもどっとねっとふぁん様の指示によりこんな処理を作成する事ができました。

    大変ありがたく思います。

    ほんとうに有り難うございました。

     

    2006年7月26日 7:32