gridview编辑状态下有4个文本框··要自动计算前3个文本框中float数据类型的值的积··求实现JS代码··
我自己写的JS但不行
function jsh(obj1,obj2,obj3,obj4)
{
var value1=obj1.value;
var value2=obj2.value;
var value3=obj3.value;
var value4=obj4.value;
if(document.all.TextBox5.value!=0)
{
value1=(document.all.TextBox5.value);
} else
{
value1=0;
}
if(document.all.TextBox8.value!=0)
{
value2=(document.all.TextBox8.value);
} else
{
value2=0;
}
if(document.all.TextBox11.value!=0)
{
value3=(document.all.TextBox11.value);
} else
{
value3=0;
}
if(document.all.TextBox14.value!=0)
{
value4=(document.all.TextBox14.value);
} else
{
value4=0;
}
document.all.TextBox33.value=parseFloat(value1)+parseFloat(value2)+parseFloat(value3)+parseFloat(value4)
}
gridview代码··
<asp:TemplateField HeaderText="用量(Yid)" SortExpression="yid">
<EditItemTemplate>
<asp:TextBox ID="TextBox4" runat="server" Height="22px"
Text='<%# Bind("yid") %>' Width="50px" onkeyup="buliao(this,this,this,TextBox6)"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("yid") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="单价(price)" SortExpression="price">
<EditItemTemplate>
<asp:TextBox ID="TextBox5" runat="server" Height="22px"
Text='<%# Bind("price") %>' Width="50px" onkeyup="buliao(this,this,this,TextBox6)"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Bind("price") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="价格(Total)" SortExpression="total">
<EditItemTemplate>
<asp:TextBox ID="TextBox6" runat="server" Height="22px"
Text='<%# Bind("total") %>' Width="50px"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label6" runat="server" Text='<%# Bind("total") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="损耗(Wastage)" SortExpression="wastage">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True"
onselectedindexchanged="DropDownList2_SelectedIndexChanged1" onkeyup="buliao(this,this,this,TextBox6)">
<asp:ListItem>1.01</asp:ListItem>
<asp:ListItem>1.02</asp:ListItem>
<asp:ListItem>1.03</asp:ListItem>
<asp:ListItem>1.04</asp:ListItem>
<asp:ListItem>1.05</asp:ListItem>
<asp:ListItem>1.06</asp:ListItem>
<asp:ListItem>1.07</asp:ListItem>
<asp:ListItem>1.08</asp:ListItem>
<asp:ListItem>1.09</asp:ListItem>
<asp:ListItem>1.10</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label7" runat="server" Text='<%# Bind("wastage") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="总价(TOTAL)" SortExpression="TOTALPRICE">
<EditItemTemplate>
<asp:TextBox ID="TextBox8" runat="server" Height="22px"
Text='<%# Bind("TOTALPRICE") %>' Width="50px"></asp:TextBox>
</EditItemTemplate>
------解决方案--------------------------------------------------------
- HTML code
<asp:TemplateField HeaderText="用量(Yid)" SortExpression="yid"> <EditItemTemplate> <asp:TextBox [color=#FF0000]ID="TextBox4" onkeydown="checkFloat(event)" runat="server" Height="22px" Text=' <%# Bind("yid") %>' Width="50px" onkeyup="buliao(this)"> </asp:TextBox> [/color] </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label4" runat="server" Text=' <%# Bind("yid") %>'> </asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="单价(price)" SortExpression="price"> <EditItemTemplate> <asp:TextBox ID="TextBox5" onkeydown="checkFloat(event)" runat="server" Height="22px" Text=' <%# Bind("price") %>' Width="50px" onkeyup="buliao(this)"> </asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label5" runat="server" Text=' <%# Bind("price") %>'> </asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="价格(Total)" SortExpression="total"> <EditItemTemplate> <asp:TextBox ID="TextBox6" runat="server" Height="22px" Text=' <%# Bind("total") %>' Width="50px"> </asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label6" runat="server" Text=' <%# Bind("total") %>'> </asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="损耗(Wastage)" SortExpression="wastage"> <EditItemTemplate> <asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True" onselectedindexchanged="DropDownList2_SelectedIndexChanged1" onkeyup="buliao(this,this,this,TextBox6)"> <asp:ListItem>1.01 </asp:ListItem> <asp:ListItem>1.02 </asp:ListItem> <asp:ListItem>1.03 </asp:ListItem> <asp:ListItem>1.04 </asp:ListItem> <asp:ListItem>1.05 </asp:ListItem> <asp:ListItem>1.06 </asp:ListItem> <asp:ListItem>1.07 </asp:ListItem> <asp:ListItem>1.08 </asp:ListItem> <asp:ListItem>1.09 </asp:ListItem> <asp:ListItem>1.10 </asp:ListItem> </asp:DropDownList> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label7" runat="server" Text=' <%# Bind("wastage") %>'> </asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="总价(TOTAL)" SortExpression="TOTALPRICE"> <EditItemTemplate> <asp:TextBox ID="TextBox8" runat="server" Height="22px" Text=' <%# Bind("TOTALPRICE") %>' Width="50px"> </asp:TextBox> </EditItemTemplate>
------解决方案--------------------------------------------------------
如果计算发生在第4个文本框获取焦点的时候:
<input id=text4 type=text onfocus="getNum(this)"/>
function getNum(layer)
{
var tr = layer.parentNode.parentNode;//获取text4所在行
var n1 = tr.childNodes[0].childNodes[0].value;
var n2 = tr.childNodes[1].childNodes[0].value;
var n3 = tr.childNodes[2].childNodes[0].value;
var n4 = parseInt(n1)*parseInt(n2)*parseInt(n3);//最好先判断一下是否为int:if(isNaN(n1))alert("非数字");
layer.value = n4;
}
------解决方案--------------------------------------------------------
http://blog.csdn.net/antiking/archive/2008/11/11/3278059.aspx
------解决方案--------------------------------------------------------
一下测试全部通过的。楼主参考一下。
里面调用的buliao方法我都把参数去掉了,用不着带参数。"损耗"那里我改成onclick事件,不是用onkeyup事件。
我加了一个文本框txtGridViewRow,用来保存编辑行索引.在触发Gridview1_RowEditing事件时给它赋值
- C# code
protected void Gridview1_RowEditing(object sender, GridViewEditEventArgs e){ Gridview1.EditIndex = e.NewEditIndex; txtGridViewRow.Text = e.NewEditIndex.ToString(); BindGrid();}页面:<asp:TextBox runat="server" ID="txtGridViewRow"></asp:TextBox>GridView: <asp:TemplateField HeaderText="用量(Yid)" SortExpression="yid"> <EditItemTemplate> <asp:TextBox ID="TextBox4" runat="server" Height="22px" Text=' <%# Bind("yid") %>' Width="50px" onkeyup="javascript:buliao();"> </asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label4" runat="server" Text=' <%# Bind("yid") %>'> </asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="单价(price)" SortExpression="price"> <EditItemTemplate> <asp:TextBox ID="TextBox5" runat="server" Height="22px" Text=' <%# Bind("price") %>' Width="50px" onkeyup="javascript:buliao();"> </asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label5" runat="server" Text=' <%# Bind("price") %>'> </asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="价格(Total)" SortExpression="total"> <EditItemTemplate> <asp:TextBox ID="TextBox6" runat="server" Height="22px" Text=' <%# Bind("total") %>' Width="50px"> </asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label6" runat="server" Text=' <%# Bind("total") %>'> </asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="损耗(Wastage)" SortExpression="wastage"> <EditItemTemplate> <asp:DropDownList ID="DropDownList2" runat="server" onclick="javascript:buliao();"> <asp:ListItem>1.01 </asp:ListItem> <asp:ListItem>1.02 </asp:ListItem> <asp:ListItem>1.03 </asp:ListItem> <asp:ListItem>1.04 </asp:ListItem> <asp:ListItem>1.05 </asp:ListItem> <asp:ListItem>1.06 </asp:ListItem> <asp:ListItem>1.07 </asp:ListItem> <asp:ListItem>1.08 </asp:ListItem> <asp:ListItem>1.09 </asp:ListItem> <asp:ListItem>1.10 </asp:ListItem> </asp:DropDownList> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label7" runat="server" Text='d'> </asp:Label> </ItemTemplate> </asp:TemplateField>