none
RowCommandイベントについて RRS feed

  • 質問

  • MVS2008 初心者です。どなたかご教授願います。

    環境:Windows XP、MVS2008 c#

    Webフォームにてgridviewを作成し、GRID上の釦(複数)イベントをRowCommandで拾おうとしています。ソースコード上に以下のコードを記載しているのですが、イベントがかかりません。GridView1_SelectedIndexChangedにはイベントがかかります。何か初期設定がいるのでしょうか?

    ---------  以下ソース

            protected void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
            {

                int args = Int32.Parse((String)e.CommandArgument);

                switch (e.CommandName)
                {

                    // [syousai]ボタンがクリックされた場合
                    case "syousai":
                        GridView1.Rows[args].BackColor = System.Drawing.Color.Azure;
                        break;

                    // [joutai]ボタンがクリックされた場合
                    case "joutai":
                        GridView1.Rows[args].BackColor = System.Drawing.Color.Empty;
                        break;
                }
            }

    --------------

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="WebTest.WebForm3" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
       
        </div>
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
            AutoGenerateColumns="False" BackColor="LightGoldenrodYellow" BorderColor="Tan"
            BorderWidth="1px" CellPadding="2" DataSourceID="SqlDataSource1"
            ForeColor="Black" GridLines="None"
            onselectedindexchanged="GridView1_SelectedIndexChanged">
            <Columns>
                <asp:ButtonField ButtonType="Button" CommandName="status" Text="状態" />
                <asp:ButtonField ButtonType="Button" CommandName="syousai" Text="詳細" />
                <asp:BoundField DataField="P_JOB_NO" HeaderText="P_JOB_NO"
                    SortExpression="P_JOB_NO" />
                <asp:BoundField DataField="P_PRODUCT_NO" HeaderText="P_PRODUCT_NO"
                    SortExpression="P_PRODUCT_NO" />
                <asp:BoundField DataField="P_USER" HeaderText="P_USER"
                    SortExpression="P_USER" />
                <asp:BoundField DataField="P_USER_NO" HeaderText="P_USER_NO"
                    SortExpression="P_USER_NO" />
                <asp:BoundField DataField="P_DELIVERY_NO" HeaderText="P_DELIVERY_NO"
                    SortExpression="P_DELIVERY_NO" />
                <asp:BoundField DataField="P_PLANT_FLAG" HeaderText="P_PLANT_FLAG"
                    SortExpression="P_PLANT_FLAG" />
                <asp:BoundField DataField="P_JOB_NO" HeaderText="P_JOB_NO"
                    SortExpression="P_JOB_NO" />
                <asp:BoundField DataField="P_PRODUCT_NO" HeaderText="P_PRODUCT_NO"
                    SortExpression="P_PRODUCT_NO" />
                <asp:BoundField DataField="P_USER" HeaderText="P_USER"
                    SortExpression="P_USER" />
                <asp:BoundField DataField="P_USER_NO" HeaderText="P_USER_NO"
                    SortExpression="P_USER_NO" />
                <asp:BoundField DataField="P_DELIVERY_NO" HeaderText="P_DELIVERY_NO"
                    SortExpression="P_DELIVERY_NO" />
                <asp:BoundField DataField="P_PLANT_FLAG" HeaderText="P_PLANT_FLAG"
                    SortExpression="P_PLANT_FLAG" />
                <asp:ButtonField ButtonType="Button" CommandName="Cancel" Text="状態" />
            </Columns>
            <FooterStyle BackColor="Tan" />
            <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue"
                HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
            <HeaderStyle BackColor="Tan" Font-Bold="True" />
            <AlternatingRowStyle BackColor="PaleGoldenrod" />
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="<%$ ConnectionStrings:EU001ConnectionString2 %>"
            onselecting="SqlDataSource1_Selecting"
            SelectCommand="SELECT EUMANAGER.EU_PRODUCT.* FROM EUMANAGER.EU_PRODUCT">
        </asp:SqlDataSource>
        </form>
    </body>
    </html>

     

    • 移動 山本春海 2011年11月16日 6:34 より適切と思われるカテゴリに移動しました。 (移動元:SQL Server)
    2011年11月14日 8:56

回答

  • > コードディタ上に[grid]-[rowcommand]すら表示できません。

    以下のページを見てください。

    方法 : ASP.NET Web ページのイベント ハンドラーを作成する
    http://msdn.microsoft.com/ja-jp/library/6w2tb12s.aspx

    この中の「コード エディターでイベント ハンドラーを作成するには」の
    セクションに

    "C# を使用する分離コード ページの場合、次の手順のドロップダウン
    リストにコントロール名が表示されないため、この方法は使用できませ
    ん。他の手順を使用してください。"

    と書いてありますが、これが今回のケースに該当するのだと思います。

    このページに他の方法がいろいろ書いてあるので、それを試してみてくだ
    さい。

     

    #質問内容が SQL Server とは関係ないようです。適切なフォーラムにお願いします。

    • 回答の候補に設定 山本春海 2011年11月21日 5:46
    • 回答としてマーク 山本春海 2011年11月24日 8:53
    2011年11月15日 12:46
  • 先に紹介したページを参考にして、Visual Studio でのイベントハ
    ンドラの自動生成はできるようになったでしょうか。

    また、GridView1_RowCommand ハンドラに制御が飛ばない問題は解決
    できたでしょうか。GridView に以下の設定ができれば解決すると思
    います。

    onrowcommand="GridView1_RowCommand"

     

    • 回答としてマーク 山本春海 2011年11月24日 8:53
    2011年11月18日 12:02

すべての返信

  • SelectedIndexChanged イベントをハンドリングしているからではないですか?

     

    protected void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
    {

        省略

    }

    ここではメソッドを定義しているだけです。

    aspx の定義でこのメソッドに正しくハンドリングしてあげない限り、このメソッドが呼ばれる事はありません。

    ってこうゆう話じゃないですよね?

    2011年11月15日 2:19
  • aviator_ さん

    回答ありがとうございます。

    ご指摘のとおり、RowCommandのハンドリング追加方法が分からなく困っています。

    http://www.atmarkit.co.jp/fdotnet/dotnettips/822aspgridvwcmdbtn1/aspgridvwcmdbtn1.html

    のサイトを参考にRowCommandイベント・ハンドラを追加しようとしたのですが、コードディタ上に[grid]-[rowcommand]すら表示できません。根本的になにか設定がいけないのでしょうか?

     

    2011年11月15日 2:54
  • GridView1_SelectedIndexChanged をハンドリングするために onselectedindexchanged="GridView1_SelectedIndexChanged" と書いているということは...。

    参考:
    RowCommand イベント
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.gridview.rowcommand(v=VS.90).aspx

    # "MVS2008" って何のことかと思ったら "Microsoft Visual Studio 2008" のことみたいですね。だったら SQL Server ではないような。
    2011年11月15日 7:26
  • > コードディタ上に[grid]-[rowcommand]すら表示できません。

    以下のページを見てください。

    方法 : ASP.NET Web ページのイベント ハンドラーを作成する
    http://msdn.microsoft.com/ja-jp/library/6w2tb12s.aspx

    この中の「コード エディターでイベント ハンドラーを作成するには」の
    セクションに

    "C# を使用する分離コード ページの場合、次の手順のドロップダウン
    リストにコントロール名が表示されないため、この方法は使用できませ
    ん。他の手順を使用してください。"

    と書いてありますが、これが今回のケースに該当するのだと思います。

    このページに他の方法がいろいろ書いてあるので、それを試してみてくだ
    さい。

     

    #質問内容が SQL Server とは関係ないようです。適切なフォーラムにお願いします。

    • 回答の候補に設定 山本春海 2011年11月21日 5:46
    • 回答としてマーク 山本春海 2011年11月24日 8:53
    2011年11月15日 12:46
  • 皆様、ずれた質問に丁寧な回答をいただきありがとうございました。

    参考になりました。

    2011年11月17日 1:30
  • 先に紹介したページを参考にして、Visual Studio でのイベントハ
    ンドラの自動生成はできるようになったでしょうか。

    また、GridView1_RowCommand ハンドラに制御が飛ばない問題は解決
    できたでしょうか。GridView に以下の設定ができれば解決すると思
    います。

    onrowcommand="GridView1_RowCommand"

     

    • 回答としてマーク 山本春海 2011年11月24日 8:53
    2011年11月18日 12:02