日期:2014-05-17  浏览次数:20433 次

[在线等]gridview启用编辑功能
界面代码
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();//刷新
}