界面代码
- C# code
<asp:TemplateField HeaderText="数量"> <ItemTemplate> <asp:Label ID="lblcounts0" runat="server" Text='<%# Bind("hm_counts") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtcounts" Width="60" runat="server" Text='<%# Bind("hm_counts") %>'></asp:TextBox> </EditItemTemplate> <ItemStyle HorizontalAlign="Center" Width="100px" /> </asp:TemplateField>
后台代码
- C# code
//更新事件 protected void gvHTMX_RowUpdating(object sender, GridViewUpdateEventArgs e) { int hm_id = Convert.ToInt32(gvHTMX.DataKeys[e.RowIndex].Value); //下面这个counts是文本框的值 int counts = Convert.ToInt32(((TextBox)gvHTMX.Rows[e.RowIndex].FindControl("txtcounts")).Text); //下面这个numbers是原始数量 int numbers = Convert.ToInt32(((Label)gvHTMX.Rows[e.RowIndex].FindControl("lblcounts0")).Text); string beiz = ((TextBox)gvHTMX.Rows[e.RowIndex].FindControl("txtmxbz")).Text; for (int i = 0; i < list.Count; i++) { if (list[i].Hm_id == hm_id) { list[i].Hm_counts = counts; list[i].Hm_beiz = beiz; } } this.gvHTMX.EditIndex = -1; this.initGvHTMX();//刷新 }
现在问题出在这个可编辑的文本框,我刚写完代码测试的时候,是可以正常编辑的,但是过了两天。。。这个counts得到的值一直是未改动的。比如,文本款显示的是2000。但是我这次到货只有1000,那我就编辑文本框。将2000改为1000,本来后台取出的值应该是1000猜对,可是我取出的为什么是2000这个固定值?在线求解,谢谢
------解决方案--------------------------------------------------------
楼主我也遇到过类似的最后是在 Page_Load中添加
if (!IsPostBack)
{
}
具体里面怎么写你可以自己查下msdn。
你先试下。
- C# code
if (!IsPostBack){ int hm_id = Convert.ToInt32(gvHTMX.DataKeys[e.RowIndex].Value); //下面这个counts是文本框的值 int counts = Convert.ToInt32(((TextBox)gvHTMX.Rows[e.RowIndex].FindControl("txtcounts")).Text); //下面这个numbers是原始数量 int numbers = Convert.ToInt32(((Label)gvHTMX.Rows[e.RowIndex].FindControl("lblcounts0")).Text); string beiz = ((TextBox)gvHTMX.Rows[e.RowIndex].FindControl("txtmxbz")).Text; for (int i = 0; i < list.Count; i++) { if (list[i].Hm_id == hm_id) { list[i].Hm_counts = counts; list[i].Hm_beiz = beiz; } } this.gvHTMX.EditIndex = -1; this.initGvHTMX();//刷新}