1

編集モードのテレリック RadGrid があります。各セルには NumericTextBox が含まれます。同じ行の他のセルに基づいて 1 つのセルを計算することは可能ですか (クライアント側で)。たとえば、価格やアイテムなどのセルを含む行がある場合、すべての変更で合計価格を計算する必要がありますが、クライアント側ではサーバー側に行く必要はありません。これは RadGrid で可能ですか?

4

4 に答える 4

6

すべての回答に感謝しますが、テレリック フォーラムで解決策を見つけました。誰かが同じ問題で立ち往生した場合に備えて、ここに解決策を貼り付けます。

ASPX:

<Columns> 
    <rad:GridTemplateColumn UniqueName="Price" HeaderText="Price">
    <EditItemTemplate> 
        <radI:RadNumericTextBox ID="txtPrice" runat="server">  
        </radI:RadNumericTextBox> 
    </EditItemTemplate> 
    </rad:GridTemplateColumn> 
    <rad:GridTemplateColumn UniqueName="Quantity" HeaderText=" Number of Items">  
    <EditItemTemplate> 
        <radI:RadNumericTextBox ID="txtQuantity" runat="server">  
        </radI:RadNumericTextBox> 
    </EditItemTemplate> 
    </rad:GridTemplateColumn> 
    <rad:GridTemplateColumn UniqueName="TotalAmount" HeaderText="Total">
    <EditItemTemplate> 
        <radI:RadNumericTextBox ID="txtTotalAmount" runat="server">  
        </radI:RadNumericTextBox> 
    </EditItemTemplate> 
    </rad:GridTemplateColumn> 
</Columns>

C#

  protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)  
    {  

    if (e.Item is GridDataItem && e.Item.IsInEditMode)  
    {  
        GridDataItem item = (GridDataItem)e.Item;  
        RadNumericTextBox txtPrice= item.FindControl("txtPrice") as RadNumericTextBox;       // Get the textbox for column Price   
        RadNumericTextBox txtQuantity= item.FindControl("txtQuantity") as RadNumericTextBox;    // Get the textbox for column Quantity     
        RadNumericTextBox txtTotalAmount= item.FindControl("txtTotalAmount") as RadNumericTextBox; // Get the textbox for column "TotalAmount", if it is template as shown in aspx    

        txtPrice.Attributes.Add("onFocusout", "return calculate('" + txtPrice.ClientID + "','" + txtQuantity.ClientID + "','" + txtTotalAmount.ClientID + "')");  
        txtQuantity.Attributes.Add("onFocusout", "return calculate('" + txtPrice.ClientID + "','" + txtQuantity.ClientID + "','" + txtTotalAmount.ClientID + "')");  
        txtTotalAmount.Attributes.Add("onfocus", "return calculate('" + txtPrice.ClientID + "','" + txtQuantity.ClientID + "','" + txtTotalAmount.ClientID + "')");  
    }  
} 

JavaScript:

<script type="text/javascript">  
function calculate(price, quantity, totalAmount)   
{  
    var text1 = $find(price); //I used Asp.net Ajax find method
    var text2 = $find(quantity);  
    var text3 = $find(totalAmount);  
    var total = text1.GetValue() * text2.GetValue();  
    text3.SetValue(total);  
}  
</script>
于 2009-05-30T09:05:57.640 に答える
0

各アイテムはテーブル行にあるため、javascriptを使用して親アイテムを検索し、すべての入力をループして探しているアイテムを見つけることができますか?jQueryを使用する場合はこれが可能であり、テキストボックスを簡単に区別したい場合は、各TextBoxにCssClassを適用できますか?

于 2009-05-29T00:23:10.973 に答える
0

Telerik サイトの RadGrid -> アプリケーション シナリオ セクションのデモをチェックしてください。数値テキスト ボックスを使用し、探しているものを示しています。

ディック

于 2009-05-28T13:32:51.660 に答える
0

クライアント側のバインディングを介してデータを取得した場合も可能です。ほとんどの場合、AJAX を介して行われます。その場合、グリッドの datasource プロパティからすべての値を取得できるはずです。データ サーバー側をバインドすると、現在、この場合グリッドはクライアント側のデータソースを構築しないため、難しくなります。

于 2009-05-28T12:58:22.010 に答える