Как рассчитать значение ячейки RadGrid на стороне клиента? - PullRequest
1 голос
/ 28 мая 2009

У меня есть Telerik RadGrid, который находится в режиме редактирования. Каждая ячейка содержит NumericTextBox. Можно ли рассчитать одну ячейку на основе других ячеек в той же строке (на стороне клиента). Например, если у меня есть строка, содержащая такие ячейки, как цена и товар, я хочу при каждом изменении вычислять общую цену, но на стороне клиента, не переходя на сторону сервера. Это возможно с RadGrid?

Ответы [ 4 ]

6 голосов
/ 30 мая 2009

Спасибо за все ваши ответы, но я нашел решение здесь на 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 голосов
/ 28 мая 2009

Ознакомьтесь с демонстрацией на сайте Telerik из раздела RadGrid -> Сценарии приложений, в котором используются числовые текстовые поля и показано, что вы ищете, чувак.

Dick

0 голосов
/ 29 мая 2009

Поскольку каждый элемент находится в строке таблицы, вы можете использовать javascript, чтобы найти родительский элемент, а затем перебрать все входные данные, чтобы найти те, которые вы ищете? Если вы собираетесь использовать jQuery, это должно быть возможно, и если вы хотите легко различать текстовые поля, вы можете применить CssClass к каждому TextBox?

0 голосов
/ 28 мая 2009

Это возможно при условии, что вы получили данные также через привязку на стороне клиента, скорее всего через AJAX. Если это так, вы сможете получить все значения из свойства источника данных сетки. Если вы привязываете сторону сервера данных, это становится сложнее, потому что в настоящее время сетка не создает источник данных на стороне клиента в этом случае.

...