2012-03-01 85 views
0

我GridView的文本框里面的这两个的ItemTemplate,我试图让他们之间的计算,但不grid.here内工作是我的代码化妆计算

<asp:TemplateField HeaderText="Net Weight"> 
        <ItemTemplate> 
         <asp:TextBox ID="txtNetWT" runat="server" Width="70px" AutoPostBack=false></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Rate"> 
        <ItemTemplate> 
         <asp:TextBox ID="txtRate" runat="server" Width="70px" ></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="SNF"> 
        <ItemTemplate> 
         <asp:TextBox ID="txtSNF" runat="server" Width="70px" ></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="FAT"> 
        <ItemTemplate> 
         <asp:TextBox ID="txtFat" runat="server" Width="70px" ></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="LR"> 
        <ItemTemplate> 
         <asp:TextBox ID="txtLR" runat="server" Width="70px"></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="14 TS"> 
        <ItemTemplate> 
         <asp:TextBox ID="txtTS" runat="server" Width="70px" ></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 

但是当我进入这个值对其他元素没有影响。请告诉我在Javascript中的任何适当的功能来做到这一点。

+0

什么是您的计算公式?你有两个文本框,然后计算过程是? – 2012-03-01 07:20:53

+0

txtTS = txtFAT + txtSNF * txtNETWT/14这是公式 – 2012-03-01 07:28:21

+0

我已经更新了我的所有列在我的问题 – 2012-03-01 07:29:59

回答

2

请检查下面的代码。注意你需要调整..整数或浮动..等我测试了一些基于你的公式的计算。

- 摆在JavaScript部分中头

<script type="text/javascript" language="javascript"> 
     function Calculate(txtFAT, txtSNF, txtNETWT, txtTS) { 
      var txtFATObj = document.getElementById(txtFAT); 
      var txtSNFObj = document.getElementById(txtSNF); 
      var txtNETWTObj = document.getElementById(txtNETWT); 
      var txtTSObj = document.getElementById(txtTS); 

      if (txtFATObj != null && txtSNFObj != null && txtNETWTObj != null && txtTSObj != null) { 
       txtTSObj.value = parseFloat(txtFATObj.value) + (parseFloat(txtSNFObj.value) * parseFloat(txtNETWTObj.value)/14); 
      } 
     } 
    </script> 

---测试GridView控件代码ASPX -----------

<asp:GridView ID="grvCalc" runat="server" AutoGenerateColumns="false" 
     onrowdatabound="grvCalc_RowDataBound"> 
     <Columns> 
      <asp:BoundField HeaderText="Item" DataField="Item" /> 
      <asp:TemplateField HeaderText="Net Weight"> 
       <ItemTemplate> 
        <asp:TextBox ID="txtNetWT" runat="server" Width="70px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Rate"> 
       <ItemTemplate> 
        <asp:TextBox ID="txtRate" runat="server" Width="70px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="SNF"> 
       <ItemTemplate> 
        <asp:TextBox ID="txtSNF" runat="server" Width="70px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="FAT"> 
       <ItemTemplate> 
        <asp:TextBox ID="txtFat" runat="server" Width="70px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="LR"> 
       <ItemTemplate> 
        <asp:TextBox ID="txtLR" runat="server" Width="70px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="14 TS"> 
       <ItemTemplate> 
        <asp:TextBox ID="txtTS" runat="server" Width="70px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField>    
     </Columns> 
    </asp:GridView> 

----- ----测试数据绑定到gridview的----------------

private void BindGridView() 
     { 
      DataTable dt = new DataTable(); 
      dt.Columns.Add("Item"); 

      DataRow dr = dt.NewRow(); 
      dr[0] = "Item 1"; 
      dt.Rows.Add(dr); 

      dr = dt.NewRow(); 
      dr[0] = "Item 2"; 
      dt.Rows.Add(dr); 

      dr = dt.NewRow(); 
      dr[0] = "Item 3"; 
      dt.Rows.Add(dr); 

      grvCalc.DataSource = dt; 
      grvCalc.DataBind(); 
     } 

-----需要附加每个文本控制的客户端事件用于测算参与 - gridvew行数据绑定事件..计算将执行onfoucus文本框的事件

protected void grvCalc_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       TextBox txtFATObj = (TextBox)e.Row.FindControl("txtFAT"); 
       TextBox txtSNFObj = (TextBox)e.Row.FindControl("txtSNF"); 
       TextBox txtNETWTObj = (TextBox)e.Row.FindControl("txtNETWT"); 
       TextBox txtTSObj = (TextBox)e.Row.FindControl("txtTS"); 

       txtFATObj.Attributes.Add("onfocusout", "Calculate('" + txtFATObj.ClientID + "','" + txtSNFObj.ClientID + "','" + txtNETWTObj.ClientID + "','" + txtTSObj .ClientID + "')"); 
       txtSNFObj.Attributes.Add("onfocusout", "Calculate('" + txtFATObj.ClientID + "','" + txtSNFObj.ClientID + "','" + txtNETWTObj.ClientID + "','" + txtTSObj.ClientID + "')"); 
       txtNETWTObj.Attributes.Add("onfocusout", "Calculate('" + txtFATObj.ClientID + "','" + txtSNFObj.ClientID + "','" + txtNETWTObj.ClientID + "','" + txtTSObj.ClientID + "')"); 
      } 
     } 
+0

在哪里调用Calculate(txtFAT,txtSNF,txtNETWT,txtTS)网格视图 – 2012-03-01 09:19:10

+0

里面的GridView行数据绑定事件..我已经porivded的代码。 – 2012-03-01 09:21:35

0

这应该工作:

onkeydown="document.getElementById('<%= txtRate.ClientID %>').value=this.value;" 
+0

没有兄弟它什么都没有给其他文本框 – 2012-03-01 07:27:03

3

只有改变aspx.cs页面 “的onkeyup” txtFATObj.Attributes.Add( “的onkeyup”,“计算(” “+ txtFATObj.ClientID +”','“+ txtSNFObj.ClientID +”','“+ txtNETWTObj.ClientID +”','“+ txtTSObj.ClientID +”')“);