如何从视图内部获取网格视图的客户端ID以在javascript中使用

时间:2013-01-14 05:50:00

标签: javascript asp.net gridview

我有一个网格视图,我想用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]

2 个答案:

答案 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));
   }

希望这有帮助。