我的网络应用程序有一个gridview,其中有数量和单价列和总列。如果我输入数量和单价,那么我想在下一栏自动显示总价。但是对于我当前的编码,它只会在我重新加载页面后才显示,我只点击添加按钮。当我移动到Total列时,我需要自动显示总金额。这是我目前的代码。
<ItemTemplate>
<asp:TextBox ID="txttotal" runat="server"
Text='<%# Convert.ToInt32(Eval("Qty")) * Convert.ToInt32(Eval("Uprice"))%>'
AutoPostBack="True">
</asp:TextBox>
</ItemTemplate>`
答案 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 + "')");
}
}