GridView中的TextBox在回发时未保持其值

本文关键字:中的 TextBox GridView | 更新日期: 2023-09-27 18:27:42

我在.NET表单应用程序上有一个网格视图,在回发时,我看不到在网格视图中的文本框中输入的值。

ASPX:

<asp:GridView ID="gvItems" runat="server" AutoGenerateColumns="false" ShowHeader="false" DataKeyNames="ItemId" EnableViewState="true">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:TextBox ID="txtItem" runat="server" Text="0" EnableViewState="true" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="ItemId" /> 
     </Columns>
</asp:GridView>
<asp:Button runat="server" ID="btn" Text="Submit" OnClick="btn_OnClick" OnClientClick="javascript:return someClientStuff();" />

代码背后:

protected void btn_OnClick(object sender, System.EventArgs e)
{
    foreach(GridViewRow row in gvItems.Rows)
    {                
        if (row.RowType == DataControlRowType.DataRow)
        {
            var itemId = Convert.ToInt32(gvItems.DataKeys[row.RowIndex].Values[0]);
            var itemValue = ((row.Cells[0].FindControl("txtItem") as TextBox).Text;
        }
}

我看到为每一行填充了itemId,但itemValue总是空字符串。

我已经有一段时间没有处理表格申请了,任何帮助都将不胜感激!

GridView中的TextBox在回发时未保持其值

我将假设GridViewDataBind不在if(!IsPostBack)中。将其添加到Page_Load

if(!IsPostBack)
{
    gvItems.DataSource = soruceOftheGrid
    gvItems.DataBind();
}

单击按钮,尝试将值存储在视图状态和页面加载事件中,尝试将视图状态分配回网格视图,因为每次回发都会调用页面加载事件。将值分配回页面加载中的网格视图是很好的,这将帮助您保留输入的值。