1、C#后台代码:
//插入状态时,用于计算金额.
if (e.Item.ItemType == ListViewItemType.InsertItem) {
TextBox FPriceTextBox = (TextBox)e.Item.FindControl("FPriceTextBox"); //单价的控件.
TextBox FCountTextBox = (TextBox)e.Item.FindControl("FCountTextBox"); //数量的控件.
TextBox FAcountTextBox = (TextBox)e.Item.FindControl("FAcountTextBox"); //金额的控件.
//设置额外属性,用户从客户端的该属性中寻找该控件.
FPriceTextBox.Attributes["myId"] = FPriceTextBox.ClientID;
FCountTextBox.Attributes["myId"] = FCountTextBox.ClientID;
FAcountTextBox.Attributes["myId"] = FAcountTextBox.ClientID;
//为单价、数量控件相应事件(焦点离开时计算金额)
FPriceTextBox.Attributes["onblur"] = "calcuAcount('" + FPriceTextBox.ClientID + "," + FCountTextBox.ClientID + "," + FAcountTextBox.Attributes["myId"] + "')";
FCountTextBox.Attributes["onblur"] = "calcuAcount('" + FPriceTextBox.ClientID + "," + FCountTextBox.ClientID + "," + FAcountTextBox.ClientID + "')";
2、jquery方法:
function calcuAcount(price, count, acount) {
if ($("text[myId=" + acount + "]")) {
alert(acount); //这里总是undifined。
var strPrice = $("text[myId=" + price + "]").val();
var strCount = $("text[myId=" + count + "]").val();
var intPrice = parseFloat(strPrice, 10);
var intCount = parseFloat(strCount, 10);
$("text[myId=" + acount + "]").val(intPrice * intCount);
}
}
description:
对于上次2010的一个bug,我查了一下资料,然后想避开那个bug,需求是:
对于前面的两个文本框,当焦点离开时,自动计算金额,并赋值给第3个文本框,
在后台代码中,可以拿到 显示金额我设置的属性,而且aps引擎解析到浏览器时,也可以拿到我设置的那个属性(myId),但是,传到jquery方法的时候,那个总是udifined,别的两个都可以显示,想了很久,都找不到原因。
//插入状态时,用于计算金额.
if (e.Item.ItemType == ListViewItemType.InsertItem) {
TextBox FPriceTextBox = (TextBox)e.Item.FindControl("FPriceTextBox"); //单价的控件.
TextBox FCountTextBox = (TextBox)e.Item.FindControl("FCountTextBox"); //数量的控件.
TextBox FAcountTextBox = (TextBox)e.Item.FindControl("FAcountTextBox"); //金额的控件.
//设置额外属性,用户从客户端的该属性中寻找该控件.
FPriceTextBox.Attributes["myId"] = FPriceTextBox.ClientID;
FCountTextBox.Attributes["myId"] = FCountTextBox.ClientID;
FAcountTextBox.Attributes["myId"] = FAcountTextBox.ClientID;
//为单价、数量控件相应事件(焦点离开时计算金额)
FPriceTextBox.Attributes["onblur"] = "calcuAcount('" + FPriceTextBox.ClientID + "," + FCountTextBox.ClientID + "," + FAcountTextBox.Attributes["myId"] + "')";
FCountTextBox.Attributes["onblur"] = "calcuAcount('" + FPriceTextBox.ClientID + "," + FCountTextBox.ClientID + "," + FAcountTextBox.ClientID + "')";
2、jquery方法:
function calcuAcount(price, count, acount) {
if ($("text[myId=" + acount + "]")) {
alert(acount); //这里总是undifined。
var strPrice = $("text[myId=" + price + "]").val();
var strCount = $("text[myId=" + count + "]").val();
var intPrice = parseFloat(strPrice, 10);
var intCount = parseFloat(strCount, 10);
$("text[myId=" + acount + "]").val(intPrice * intCount);
}
}
description:
对于上次2010的一个bug,我查了一下资料,然后想避开那个bug,需求是:
对于前面的两个文本框,当焦点离开时,自动计算金额,并赋值给第3个文本框,
在后台代码中,可以拿到 显示金额我设置的属性,而且aps引擎解析到浏览器时,也可以拿到我设置的那个属性(myId),但是,传到jquery方法的时候,那个总是udifined,别的两个都可以显示,想了很久,都找不到原因。
ctrl8_FPriceTextBox,ctrl8_FCountTextBox,ctrl8_FAcountTextBox,undefined,undefined
明明只传递3个值,这里有那么多个值。
FPriceTextBox.Attributes["onblur"] = "calcuAcount('" + FPriceTextBox.ClientID + "','" + FCountTextBox.ClientID + "','" + FAcountTextBox.ClientID + "')";
解析了还是这样,无法解析。
页面的源代码:唉
onblur="calcuAcount('ctrl8_FPriceTextBox','ctrl8_FCountTextBox','ctrl8_FAcountTextBox')"
刚我换了 IE8.同样的代码可以运行····