GridView控件中有3列模板列,分别是TextBox1,TextBox2,TextBox3,
分别是单价,数量和金额,要求输入单价,数量,自动计算出金额?请问怎么实现

解决方案 »

  1.   

    上次有点错误,是两个TextBox和一个Lable,都是服务器控件,要求在两个TextBox中输入值后,Lable显示计算的结果
      

  2.   

    可以写脚本   实现在GridView绑定时,把脚本写里面
      

  3.   

    使用js脚本计算出来的数据,只能通过脚本提交到后台,也就是要使用异步提交(ajax)。
    如果用后台代码实现,关键是确定参与计算的控件到底在哪一行.
      

  4.   

    在GridView的RowDataBind事件中写代码
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType != DataControlRowType.Header && e.Row.RowType != DataControlRowType.Footer)
            {
                TextBox tb1= (TextBox )e.Row.Cells[0].FindControl("TextBox1");
                TextBox tb2= (TextBox )e.Row.Cells[1].FindControl("TextBox2");
                Label lb= (Label )e.Row.Cells[3].FindControl("Label1");
                try
                {
                 lb.Text=String.Parse(Int32.Parse(tb1.Text.Trim())+Int32.Parse(tb2.Text.Trim()));
                }
                catch
                {}
            }
        }
      

  5.   

    在GRIDVIEW绑定的时候算出值就可以了。
      

  6.   

    自己解决了 在页面里面加了个隐藏的服务器按钮,文本框的值改变事件用JS去点击隐藏的按钮,
    后台里面写按钮的点击事件,具体的事件如下:
     for (int i = 0; i < grd.Rows.Count; i++)
            {
                GridViewRow gvr = grd.Rows[i];
                TextBox tb1 = (TextBox)gvr.FindControl("txtCount");
                TextBox tb2 = (TextBox)gvr.FindControl("txtUnitsPrice");
                Label lb = (Label)gvr.FindControl("lblAmount");
                tb1.CausesValidation = false;
                tb2.CausesValidation = false;
                double sum = 0;
                try
                {
                    sum = (double.Parse(tb1.Text.Trim()) * double.Parse(tb2.Text.Trim()));
                    lb.Text = sum.ToString();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }