0

ラドグリッドを使用しています。

この投稿@StackOverflowに従い、javascriptメソッドを呼び出してセルで計算を行い、同じ行の別のセルを更新しました。

  1. Calculate メソッドを呼び出しますが、最初はセルの値を使用できません。セルが再びフォーカスされると、値が Calculate() に表示されます。これはすべての行で当てはまります。

  2. 最初の onBlur は編集された値をもたらさないため、ターゲット セルは 2 番目の onBlur イベントで計算された値で更新されます。ただし、フォーカスが他のセルに移動すると、ターゲット セルは更新された値を失い、元の値に戻ります。他のセルイベントで他のJavaScriptメソッドを呼び出していません。

私の要件は、たとえば、qtyCell と costCell を計算し、クライアント側で amountCell を更新することです。

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)  
{  
    if (e.Item is GridDataItem)
    {
        GridDataItem item = (GridDataItem)e.Item;
        RadTextBox txtQty = item.FindControl("qty") as RadTextBox;
        RadTextBox txtAmount = item.FindControl("valued") as RadTextBox;
        RadTextBox txtUnitCost = item.FindControl("unitcost") as RadTextBox;

        if (txtQty != null && txtAmount != null && txtUnitCost != null)
        {
            txtQty.Attributes.Add("onBlur", "calculate('" + txtQty.ClientID + "','" + txtAmount.ClientID + "','" + txtUnitCost.ClientID + "')");
        }
    }  
}

Javascript:

<script type="text/javascript">  
function calculate(price, quantity, totalAmount)   //this method throws error
{  
    //var text1 = $find(price);
    //var text2 = $find(quantity);  
    //var text3 = $find(totalAmount);  
    //var total = text1.GetValue() * text2.GetValue();  
    //text3.SetValue(total);  

    //commented out the above lines because .GetValue() and .SetValue() throws an error "Object does not support this method"

    var txtqty = $find(qtyCtrl);
    var txtunitcost = $find(unitcostCtrl);
    var txtvalued = $find(valuedCtrl);

    var qty = txtqty.get_displayValue();
    var unitcost = txtunitcost.get_displayValue();
    var amount = qty * unitcost;
    txtvalued.set_displayValue(amount);
}  
</script>
4

0 に答える 0