質問編集履歴

2 コードの追加

nac

nac score 7

2016/07/11 18:44  投稿

EmptyDataTemplate内のコントロールの取得方法
###前提・実現したいこと
EmptyDataTemplate内のコントロールの取得方法が知りたい。
イベント内のGridViewCommandEventArgsオブジェクトからのアクセスでなく
GridviewRowオブジェクトからのアクセスが希望です。
よろしくお願いします
###試したこと
NETで調べた以下をやっても該当のコントロールは取得できずNothingがもどってきました。
GridView1.Controls[0].Controls[0].FindControl("TextBox1");
```ここに言語を入力
              <asp:GridView ID="gv1" runat="server" AutoGenerateColumns="False" GridLines="None" UseAccessibleHeader="False" Width="100%" BorderColor="#8D001C" BorderWidth="1px" ShowHeaderWhenEmpty="True">
                   <AlternatingRowStyle Wrap="False" />
                   <Columns>
                       <asp:TemplateField ShowHeader="False">
                           <HeaderTemplate>
                               <asp:Button ID="btnAddNew" runat="server" Text="Button" />
                           </HeaderTemplate>
                           <ItemTemplate>
                               <asp:Button ID="btnDelGv" runat="server" CausesValidation="false" CommandName="RowDelete" Text="削除" TabIndex="-1" CssClass="btn"/>
                           </ItemTemplate>
                           <ItemStyle VerticalAlign="Top" />
                       </asp:TemplateField>
                       <asp:TemplateField HeaderText="連番">
                           <ItemTemplate>
                               <asp:TextBox ID="ScSeq" runat="server" Text='<%# Bind("ScSeq")%>' Columns="1" TabIndex="-1"></asp:TextBox>
                           </ItemTemplate>
                           <ItemStyle VerticalAlign="Top" />
                       </asp:TemplateField>
                       </Columns>
                   <EmptyDataTemplate>
                       <asp:Label ID="lblGridHeader" runat="server" Text="" CssClass="lblGridHeader"></asp:Label>
                       <asp:Button ID="btnAddFirstRow" runat="server" CssClass="btn" OnClick="btnAddFirstRow_Click" Text="行追加" />
                   </EmptyDataTemplate>
                   <HeaderStyle BackColor="#8D001C" BorderColor="#8D001C" BorderWidth="1px" ForeColor="White" HorizontalAlign="Left" Wrap="False" />
                   <RowStyle BorderColor="#BD284C" Wrap="False" />
                   <SelectedRowStyle BackColor="#64FFFF" />
               </asp:GridView>
```
```ここに言語を入力
   Protected Sub gv_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles gv1.RowCommand, gv2.RowCommand, gv3.RowCommand
       gv1.Controls(0).Controls(0).FindControl("btnAddFirstRow")
       If gv1.Rows.Count = 0 Then
           Dim obj As Object = gv1.Controls(0).Controls(0).FindControl("btnAddFirstRow")
           obj.focus()
       End If
   End Sub
```
  • ASP.NET

    965 questions

    ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

1 コードの追加

nac

nac score 7

2016/07/11 18:32  投稿

EmptyDataTemplate内のコントロールの取得方法
###前提・実現したいこと
EmptyDataTemplate内のコントロールの取得方法が知りたい。
イベント内のGridViewCommandEventArgsオブジェクトからのアクセスでなく
GridviewRowオブジェクトからのアクセスが希望です。
よろしくお願いします
###試したこと
NETで調べた以下をやっても該当のコントロールは取得できずNothingがもどってきました。
GridView1.Controls[0].Controls[0].FindControl("TextBox1");
GridView1.Controls[0].Controls[0].FindControl("TextBox1");
```ここに言語を入力
              <asp:GridView ID="gv1" runat="server" AutoGenerateColumns="False" GridLines="None" UseAccessibleHeader="False" Width="100%" BorderColor="#8D001C" BorderWidth="1px" ShowHeaderWhenEmpty="True">
                   <AlternatingRowStyle Wrap="False" />
                   <Columns>
                       <asp:TemplateField ShowHeader="False">
                           <HeaderTemplate>
                               <asp:Button ID="btnAddNew" runat="server" Text="Button" />
                           </HeaderTemplate>
                           <ItemTemplate>
                               <asp:Button ID="btnDelGv" runat="server" CausesValidation="false" CommandName="RowDelete" Text="削除" TabIndex="-1" CssClass="btn"/>
                           </ItemTemplate>
                           <ItemStyle VerticalAlign="Top" />
                       </asp:TemplateField>
                       <asp:TemplateField HeaderText="連番">
                           <ItemTemplate>
                               <asp:TextBox ID="ScSeq" runat="server" Text='<%# Bind("ScSeq")%>' Columns="1" TabIndex="-1"></asp:TextBox>
                           </ItemTemplate>
                           <ItemStyle VerticalAlign="Top" />
                       </asp:TemplateField>
                       </Columns>
                   <EmptyDataTemplate>
                       <asp:Label ID="lblGridHeader" runat="server" Text="" CssClass="lblGridHeader"></asp:Label>
                       <asp:Button ID="btnAddFirstRow" runat="server" CssClass="btn" OnClick="btnAddFirstRow_Click" Text="行追加" />
                   </EmptyDataTemplate>
                   <HeaderStyle BackColor="#8D001C" BorderColor="#8D001C" BorderWidth="1px" ForeColor="White" HorizontalAlign="Left" Wrap="False" />
                   <RowStyle BorderColor="#BD284C" Wrap="False" />
                   <SelectedRowStyle BackColor="#64FFFF" />
               </asp:GridView>
```
```ここに言語を入力
   Protected Sub gv_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles gv1.RowCommand, gv2.RowCommand, gv3.RowCommand
       gv1.Controls(0).Controls(0).FindControl("btnAddFirstRow")
   End Sub
```
  • ASP.NET

    965 questions

    ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る