0

編集ボタンがクリックされたときにリテラルのテキストを取得したい。これを行うコードを作成しましたが、プログラムを実行するとこの例外が発生します

"Specified argument was out of the range of valid values. Parameter name: index"

.aspx コード:

<gridview id="gridview3" onrowediting="edit>
    <coulmn>

        <asp:TemplateField HeaderText="description" Visible="true">
            <ItemTemplate>
             <asp:Literal ID="id6" runat="server" Text='<%#Eval("description") %>' >
             </asp:Literal>
            </ItemTemplate>
             <EditItemTemplate>
                 <asp:TextBox ID="TextBox1" Text='<%#Eval("description") %>'  
 runat="server" ></asp:TextBox>

            </EditItemTemplate>
            <FooterTemplate>

            <asp:TextBox ID="TextBox3"  runat="server" ></asp:TextBox>

            </FooterTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Agree" Visible="true">
            <ItemTemplate>

             <asp:Literal ID="id5" runat="server" Text='<%#Eval("option1") %>' >
             </asp:Literal>
            </ItemTemplate>
             <EditItemTemplate>
                 <asp:TextBox ID="TextBox11" Text='<%#Eval("option1") %>' 
              runat="server" ></asp:TextBox>

            </EditItemTemplate>
            <FooterTemplate>

            <asp:TextBox ID="TextBox4"  runat="server" ></asp:TextBox>    

            </FooterTemplate>
        </asp:TemplateField>
          <asp:TemplateField HeaderText="Disagree" Visible="true">
            <ItemTemplate>

             <asp:Literal ID="id4" runat="server" Text='<%#Eval("option2") %>' >
             </asp:Literal>
            </ItemTemplate>
             <EditItemTemplate>
                 <asp:TextBox ID="TextBox5" Text='<%#Eval("option2") %>' runat="server">         
                 </asp:TextBox>
            </EditItemTemplate>
            <FooterTemplate>

            <asp:TextBox ID="TextBox6"  runat="server" ></asp:Text>

            </FooterTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Action" Visible="true">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton5" Text="Edit" CommandName="edit" 

           runat="server"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
    </coulmn>
</gridview>

**code behind:**

protected void edit(object sender, GridViewEditEventArgs e)
{
    Literal l = GridView2.Rows[0].Cells[3].Controls[1] as Literal;
    Label5.Text = l.Text;

    gridview3.EditIndex = e.NewEditIndex; 
}
4

1 に答える 1

0

これを試してみてください

Literal l = GridView2.Rows[e.NewEditIndex].FindControl("id6") as Literal;
Label5.Text = l.Text;
于 2012-06-08T17:58:54.297 に答える