我有一个网格视图,我想用JavaScript来计算在文本框中输入的值。
我在onkeyup
函数的文本框中添加了onrowcreated
,它运行正常。
然后我将gridview放在multiview
中,它就停止了工作。
这是我的JavaScript函数:
function margin1(rowIndex, price, gridId) {
var grid = document.getElementById(gridId);
var volumeQuota = grid.rows[rowIndex].cells[2].innerText;
alert(volumeQuota);
var coef = grid.rows[rowIndex].cells[5].childNodes.item(1).value;
alert(coef);
var prevSites = grid.rows[rowIndex].cells[4].innerText;;
grid.rows[rowIndex].cells[6].childNodes.item(1).value = parseFloat(coef) * (parseFloat(volumeQuota) - parseFloat(prevSites));
grid.rows[rowIndex].cells[7].childNodes.item(1).value = price;
}
并且在这背后的代码中是如何添加它。
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox t1 = (TextBox)e.Row.FindControl("p98Margin1");
t1.Attributes.Add("onkeyup",
string.Format("javascript:margin1('{0}', {1}, {2})", e.Row.RowIndex + 2, a98.Text , GridView1.ClientID));
当我在JavaScript函数中提醒Gridview1.clientId
时,我收到[objectHTMLTableElement]
答案 0 :(得分:1)
使用此
t1.Attributes.Add("onkeyup",
string.Format("javascript:margin1('{0}', '{1}', '{2})'", e.Row.RowIndex + 2, a98.Text , GridView1.ClientID));
我认为这应该有用
我认为价值应该用单引号'
标记。
答案 1 :(得分:0)
就像你说你把你的网格放在一个多视图中,一切都停止了工作,这意味着你的网格视图已被埋没,你需要进一步向下钻取以暴露它。
这样做
GridView myGridView=(GridView)(MultiView1.FindControl("GridView1"));
现在,您已经正确地找到了它的ID
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox t1 = (TextBox)e.Row.FindControl("p98Margin1");
t1.Attributes.Add("onkeyup",
string.Format("javascript:margin1('{0}', {1}, {2})", e.Row.RowIndex + 2, a98.Text ,myGridView.ClientID));
}
希望这有帮助。