2009-05-28 57 views
1

我有編輯模式下的telerik RadGrid。每個單元格包含NumericTextBox。是否有可能基於同一行中的其他單元格計算一個單元格(在客戶端)。 例如,如果我有一行包含像價格和項目的單元格,我希望每次更改都計算總價格,但在客戶端,而不需要服務器端。這可能與RadGrid?如何計算客戶端的RadGrid單元格值?

回答

5

感謝您的所有答案,但我在telerik forum找到了解決方案。我只是在這裏粘貼解決方案,以防有人陷入同一問題。

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> 
0

如果您通過客戶端綁定獲取數據,最有可能通過AJAX獲得數據是可能的。如果是這樣,您應該能夠從網格的數據源屬性中獲取所有值。如果綁定數據服務器端,則會變得更加困難,因爲在這種情況下,網格目前不構建客戶端數據源。

0

退房從radgrid控件的Telerik的現場演示 - >它採用數字文本框和顯示應用場景部分你正在尋找的,夥計。

迪克

+0

如果thikn這個環節http://demos.telerik.com/aspnet-ajax/controls /examples/integration/gridandinput/defaultcs.aspx?product=grid這不是我所需要的。這個計算頁腳,我需要在一行內計算單元格。 – nemke 2009-05-28 13:47:06

0

因爲每個項目在你可以使用JavaScript來找到通過所有輸入的父項,然後環找到你正在尋找的那些錶行?如果你打算使用jQuery,這應該是可能的,如果你想很容易地區分文本框,你可以將CssClass應用到每個TextBox?