Как рассчитать значение ячейки RadGrid на стороне клиента?

StackOverflow https://stackoverflow.com/questions/920682

Вопрос

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

Это было полезно?

Решение

Спасибо за все ваши ответы, но я нашел решение здесь телерик форум.Я просто вставлю решение сюда на случай, если кто-то застрянет в той же проблеме.

АСПХ:

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

С#

  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>

Другие советы

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

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

хуй

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top