无法访问按钮单击时网格视图控件中的文本框值

本文关键字:控件 文本 视图 网格 访问 按钮 单击 | 更新日期: 2023-09-27 18:34:05

我在网格视图中拍摄了 3 个文本框。我想在按钮单击事件时访问单个标签中的所有 3 个文本框值。ASP 代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"
        CssClass="style1" ForeColor="#333333" GridLines="None" Height="342px" Width="548px">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:BoundField ApplyFormatInEditMode="True" DataField="IName" HeaderText="Item Name" />
            <asp:BoundField DataField="Description" HeaderText="Description" />
            <asp:BoundField DataField="price" HeaderText="Price" />
            <asp:TemplateField>
                <HeaderTemplate>
                    <asp:Label ID="txtqty" runat="server" AutoPostBack="false" Text="Enter Quantity" />
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:TextBox ID="txtqtys" runat="server" AutoPostBack="false" OnTextChanged="TextBox_Changed"/>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <HeaderTemplate>
                    <asp:Label ID="chkAll" runat="server" onclick="checkAll(this);" AutoPostBack="true"
                        OnCheckedChanged="CheckBox_CheckChanged" Text="Select" />
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:CheckBox ID="chk" runat="server" onclick="Check_Click(this)" AutoPostBack="True"
                        OnCheckedChanged="CheckBox_CheckChanged" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>
<asp:Label ID="lbltxtqty" runat="server" Text="txtqty" Visible="true"></asp:Label>
<asp:Button ID="btnsubmit" runat="server" Text="Submit" onclick="btnsubmit_Click" />

C# 代码:

protected void btnsubmit_Click(object sender, EventArgs e)
{
     if (!IsPostBack)
        {
            lbltxtqty.Visible = true;
            lbltxtqty.Text = ((TextBox)GridView1.Rows[0].FindControl("txtqtys")).Text;
        }
}

所以请告诉我它的编写代码。

无法访问按钮单击时网格视图控件中的文本框值

你正在"矛盾"你自己的aspxcode behind代码。为什么我这么说是因为,检查你标签标记和按钮点击事件处理程序:-

<asp:Label ID="lbltxtqty" runat="server" Text="txtqty" Visible="true"></asp:Label>

在这里,您将标签Visible属性设置为true这是没有用的,因为它默认为 true。现在,看看你试图通过使用lbltxtqty.Visible = true;使其可见的按钮点击事件,所以显然你的标记应该首先看起来像这样:-

<asp:Label ID="lbltxtqty" runat="server" Text="txtqty" Visible="false"></asp:Label>

因为,当页面加载时,您一定需要它。

现在,您的按钮单击事件来了。你知道 ASP.NET Page Life Cycle吗?当按钮单击事件被触发时,这是一个明显的回发请求,那么检查那里IsPostBack属性的意义何在?删除此代码,它应该可以工作。更改按钮单击处理程序,如下所示:-

protected void btnsubmit_Click(object sender, EventArgs e)
{
    lbltxtqty.Visible = true;
    lbltxtqty.Text = ((TextBox)GridView1.Rows[0].FindControl("txtqtys")).Text;
}