Pregunta

He telerik RadGrid que está en el modo de edición. Cada célula contiene NumericTextBox. ¿Es posible calcular una célula basada en otras celdas de la misma fila (en el lado del cliente). Por ejemplo, si tengo una fila que contiene las células como el precio y el tema que quiero en cada cambio para calcular el precio total, pero en el lado del cliente, sin tener que ir al lado del servidor. ¿Es esto posible con RadGrid?

¿Fue útil?

Solución

Gracias por todas sus respuestas, pero he encontrado la solución aquí en foro telerik. Voy a pegar la solución aquí en caso de que alguien se quede atascado en el mismo tema.

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>

Otros consejos

Es posible siempre que tienes los datos a través de la unión del lado del cliente, así, muy probablemente a través de AJAX. Si es así, usted debe ser capaz de obtener todos los valores de la propiedad de origen de datos de la red. Si enlaza el lado del servidor de datos se hace más difícil porque en la actualidad la red no construye la fuente de datos del lado del cliente en este caso.

Prueba la demo en el sitio de Telerik RadGrid -> sección de escenarios de aplicación que utiliza los cuadros de texto numéricos e ilustra lo que está buscando, tio

.

Dick

Debido a que cada elemento está en una fila de la tabla se puede usar javascript para encontrar el elemento padre y luego recorrer todos los insumos para encontrar los que está buscando? Si se va a usar jQuery esto debería ser posible y si quería distinguir los cuadros de texto podría fácilmente aplicar una CssClass a cada cuadro de texto?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top