在gridview中乘以行而不刷新页面

时间:2015-09-30 12:28:08

标签: asp.net

我的网络应用程序有一个gridview,其中有数量和单价列和总列。如果我输入数量和单价,那么我想在下一栏自动显示总价。但是对于我当前的编码,它只会在我重新加载页面后才显示,我只点击添加按钮。当我移动到Total列时,我需要自动显示总金额。这是我目前的代码。

<ItemTemplate>
    <asp:TextBox ID="txttotal" runat="server" 
        Text='<%# Convert.ToInt32(Eval("Qty")) * Convert.ToInt32(Eval("Uprice"))%>' 
        AutoPostBack="True">
    </asp:TextBox>
</ItemTemplate>`

1 个答案:

答案 0 :(得分:2)

您需要从gridview rowdatabound调用javascript函数,如下所示:

 txtFATObj.Attributes.Add("onkeyup", "Calculate('" + txtFATObj.ClientID + "','" + txtSNFObj.ClientID + "','" + txtNETWTObj.ClientID + "','" + txtTSObj.ClientID + "')");

计算()是在aspx页面或单独的JS文件中定义的。您现在可以根据收到的这些参数进行计算并设置值。

像这样定义RowDataBound,你需要找到你的控件并将捕获的值发送到javascript。实际计算将在javascript结束时进行。

protected void grvCalc_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            TextBox txtFATObj = (TextBox)e.Row.FindControl("txtFAT");
            TextBox txtSNFObj = (TextBox)e.Row.FindControl("txtSNF");
            TextBox txtNETWTObj = (TextBox)e.Row.FindControl("txtNETWT");
            TextBox txtTSObj = (TextBox)e.Row.FindControl("txtTS");

            txtFATObj.Attributes.Add("onfocusout", "Calculate('" + txtFATObj.ClientID + "','" + txtSNFObj.ClientID + "','" + txtNETWTObj.ClientID + "','" + txtTSObj .ClientID + "')");

        }
    }