Pergunta

Eu tenho telerik RadGrid que está em modo de edição. Cada célula contém NumericTextBox. É possível calcular uma célula com base em outras células na mesma linha (no lado do cliente). Por exemplo, se eu tiver uma linha que contém células, como preço e item que eu quero a cada mudança para calcular o preço total, mas no lado do cliente, sem ir ao lado do servidor. Isso é possível com RadGrid?

Foi útil?

Solução

Obrigado por todas as suas respostas, mas eu encontrei a solução aqui no telerik fórum. Eu só vou colar a solução aqui no caso de alguém ficar preso sobre a mesma questão.

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>

Outras dicas

É possível desde que você tem os dados através do lado do cliente de ligação, bem como, muito provavelmente através de AJAX. Se assim for, você deve ser capaz de obter todos os valores da propriedade fonte de dados do grid. Se você ligar o lado do servidor de dados se torna mais difícil, porque atualmente a grade não construir a fonte de dados do lado do cliente neste caso.

Confira a demonstração no site Telerik de RadGrid -.> Seção cenários de aplicação que usa caixas de texto numéricas e ilustra o que você está procurando, cara

Dick

Porque cada item está em uma linha da tabela que você poderia usar javascript para encontrar o item pai e, em seguida, percorrer todos os insumos para encontrar o que você está procurando? Se você estiver indo para usar jQuery isso deve ser possível e se você queria para distinguir as caixas de texto facilmente você poderia aplicar um CssClass a cada TextBox?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top