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

技術

やりたかったこと

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

コメント

タイトルとURLをコピーしました