1

テキスト ボックスに入力された値を計算するために JavaScript で使用したいグリッド ビューがあります。

関数のテキストボックスに追加onkeyupしていましたが、正常にonrowcreated機能していました。

次に、グリッドビューを に入れましたが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));

Gridview1.clientId私が取得しているJavaScript関数で警告するとき[objectHTMLTableElement]

4

2 に答える 2

1

これを使って

   t1.Attributes.Add("onkeyup",
             string.Format("javascript:margin1('{0}', '{1}', '{2})'", e.Row.RowIndex + 2,       a98.Text , GridView1.ClientID));

これでうまくいくと思います。
値は一重引用符で囲む必要があると思います'

于 2013-01-14T06:26:36.150 に答える
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));
   }

お役に立てれば。

于 2013-01-14T08:27:04.820 に答える