Love澤's Room

技術系ネタをまとめていたブログ。現在はカテゴリにこだわらず更新中。

GridViewのRowCommandイベントが発生しない原因と対応

新サイトへ移転しました
約3秒後に自動的にリダイレクトします。


やりたかったこと

  • GridViewの表示項目にリンクを設置し、リンクをクリックしたら処理を行う。
  • 処理のトリガーとなるのがリンクをクリックしたときに発生するRowCommandイベント。

原因と対応

  • 親ページ(マスターページ)にて、ViewStateMode="Disabled"になっていた
  • 親ページ(マスターページ)にて、ViewStateMode="Enabled"にした

ソース抜粋

  • 親ページ(ヘッダー、フッターを設定しているページ)
<div id="MasterBodyArea" class="FlameBodyCss">
    <asp:ContentPlaceHolder ID="BodyTag" runat="server" ViewStateMode="Enabled">
    <!-- それぞれのページで記述する -->
    </asp:ContentPlaceHolder>
</div>
  • 子(それぞれの画面)
<%-- Bodyタグ内の内容を記述--%>
<asp:Content ID="BodyTag" ContentPlaceHolderID="BodyTag" Runat="Server">
    <%--明細情報(GridView)--%>
    <div id="RirekiArea">
        <asp:GridView ID="gvMeisai" runat="server" ShowHeader="True" AutoGenerateColumns="False" 
            CssClass="table table-striped table-hover table-bordered" OnRowCreated="gv_RowCreated" ClientIDMode="Static">
            <HeaderStyle CssClass="table-dark" Wrap="false" />
            <Columns>
                <%--No--%>
                <asp:TemplateField HeaderText="No" ItemStyle-Width="30px" ItemStyle-HorizontalAlign="Center" >
                    <ItemTemplate>
                        <asp:LinkButton ID="lnkNO" runat="server" Text='<%# HttpUtility.HtmlEncode(Eval("NO")) %>' CommandName="lnkNO" CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>" />
                    </ItemTemplate>
                </asp:TemplateField>
                <%--登録日--%>
                <asp:TemplateField HeaderText="登録日" ItemStyle-Width="100px" ItemStyle-HorizontalAlign="Center" ItemStyle-CssClass="Nowrap" >
                    <ItemTemplate>
                        <asp:Label runat="server" ID="lblTOROKUBI" Text='<%# Bind("TOROKUBI") %>'/>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
</asp:Content>