首先让我以我知道这个问题已经被问过很多次的事实作为序言。我已尝试实施我已阅读的所有内容,但尚未解决我的问题。我在 GridView 中显示了一个购物车,我正在尝试使更新功能正常工作。单击编辑(在有问题的行上)并更改文本框中的值,然后单击更新后,我总是返回一个空字符串。我已经阅读了无数关于它是 PostBack 问题的帖子,但是我已经将我的 DataBind 方法封装在一个中,if(!Page.IsPostBack){}所以我不相信这是我的问题。这些是我的 CodeFile 中的相关方法:protected void Page_Load(object sender, EventArgs e){ if (Session["thisCart"] == null) { Session["thisCart"] = new ShoppingCart(); } thisCart = (ShoppingCart)Session["thisCart"]; if (!Page.IsPostBack) { FillData(); }}private void FillData(){ gvShoppingCart.DataSource = thisCart.Items; gvShoppingCart.DataBind(); if (thisCart.Items.Count == 0) { lblGrandTotal.Visible = false; } else { lblGrandTotal.Text = string.Format("Grand Total = {0,19:C}", thisCart.GrandTotal); lblGrandTotal.Visible = true; }}protected void gvShoppingCart_RowUpdating(object sender, GridViewUpdateEventArgs e){ TextBox txtQuantity = (TextBox)gvShoppingCart.Rows[e.RowIndex].Cells[3].Controls[0]; int quantity = Int32.Parse(txtQuantity.Text); thisCart.Update(e.RowIndex, quantity); gvShoppingCart.EditIndex = -1; FillData(); }我通常很擅长寻找答案,但是这个让我难住了。单击更新后站点崩溃,因为返回的值int quantity = Int32.Parse(txtQuantity.Text);是“”,显然你不能从中解析一个 int。至于可能重复的“ASP.NET验证错误消息以更改标签文本”的标签。我找不到任何指向答案方向的东西。
2 回答
杨魅力
TA贡献1811条经验 获得超6个赞
因为我刚刚学习 ASP.net 和 C#,所以要弄清楚这是一个非常痛苦的问题。
当我能够在较早的任务中完成这项工作时,我并没有使用母版页,但我使用了这个项目。问题在于我<form runat="server">
在母版页中使用了一个标签。<form runat="server">
由于每页只能有一个标签,因此我的 GridView 没有包含在一个标签中。一旦我删除了母版页并<form runat="server">
在 GridView 周围添加了包装器,一切都按预期工作。
湖上湖
TA贡献2003条经验 获得超2个赞
来电。FillData()
_ Page_PreInit
否则,当 ASP.Net 运行时恢复网格的 ViewState 时,包括新的文本框数据,还没有地方可以放置它。请记住,每个服务器事件都使用页面类的全新实例,并且必须从头开始重建整个页面。
- 2 回答
- 0 关注
- 122 浏览
添加回答
举报
0/150
提交
取消