我在.NET表单应用程序上有一个gridview,并且在回发时,我没有看到在gridview中的文本框中输入的值。
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始终为空字符串。
自从我在表单应用程序上工作了一段时间后,感谢任何帮助!
答案 0 :(得分:3)
我将假设DataBind
的{{1}}不在GridView
。将其添加到if(!IsPostBack)
Page_Load
答案 1 :(得分:0)
在按钮上单击,尝试将值存储在视图状态和页面加载事件中,尝试将视图状态分配回网格视图,就每次回发而言,调用页面加载事件。在页面加载中将值分配回网格视图很有用,这将有助于保留您输入的值。