C# 赢得的总金额';t计算并在文本框C中显示记录#
我目前正在做一个类似于销售和库存的项目。每次添加资源(材料、设备、车辆、承包商)时,必须根据数据库中的价格计算总成本/金额 我这里有一个文本框,其中必须显示总金额。假设每次添加资源时,它都应该更新。当我点击Save按钮时,它必须被插入数据库 这里发生的事情是,它确实会计算,但总金额不会显示在当前上下文中。你必须按下保存按钮,然后在记录显示之前返回到该页面。然后,如果要将其保存到数据库,则需要再次单击“保存”按钮 下面是我获取总金额的代码C# 赢得的总金额';t计算并在文本框C中显示记录#,c#,asp.net,sql-server-2012,C#,Asp.net,Sql Server 2012,我目前正在做一个类似于销售和库存的项目。每次添加资源(材料、设备、车辆、承包商)时,必须根据数据库中的价格计算总成本/金额 我这里有一个文本框,其中必须显示总金额。假设每次添加资源时,它都应该更新。当我点击Save按钮时,它必须被插入数据库 这里发生的事情是,它确实会计算,但总金额不会显示在当前上下文中。你必须按下保存按钮,然后在记录显示之前返回到该页面。然后,如果要将其保存到数据库,则需要再次单击“保存”按钮 下面是我获取总金额的代码 下面是我声明的代码,用于显示我放入页面加载的文本框中的
下面是我声明的代码,用于显示我放入页面加载的文本框中的记录
ltAmount.Text=GetAmount().ToString(“0.00”)
下面是我的文本框源代码
成本
如果你需要澄清,请告诉我。谢谢期待您的友好回答。“您的意思是在添加资源后,您应该能够显示总金额?如果是,则在添加资源代码后,ltAmount.Text=GetAmount().ToString(“0.00”)。”
–Imadoddin Ibn Alauddin这里的问题是,由于您正在页面加载事件中设置文本,因此在发生回发之前,文本不会被刷新。正如所建议的,在重新计算成本后,只需重置文本即可。如果您不熟悉页面生命周期,我建议您查看页面生命周期。这是MSDN网站上的一个很好的总结 你有什么错误吗?我没有任何错误。我在你的代码中看到的问题是你的总文本框将在你更改金额文本框的文本框后生效。所以,您需要在amount文本框中添加change事件,并调用getamount
函数。总文本框将产生效果。您的意思是添加资源后,您应该能够显示总金额?如果是,则ltAmount.Text=GetAmount().ToString(“0.00”)代码>添加资源后code@Imadoddin是的,没错。添加资源后,它应该能够根据添加的资源显示总量。
//Getting Total Cost Per Resources
decimal GetTotalMaterialCost()
{
decimal total = 0;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText =
"SELECT SUM(rm.Quantity * m.SellingPrice) AS TotalMaterialCost FROM Resource_Materials rm " +
"JOIN Materials m ON m.MaterialID = rm.MaterialID " +
"JOIN ProjectTasks t ON t.TaskID = rm.TaskID " +
"WHERE t.TaskID=@TaskID HAVING COUNT (*) > 0";
cmd.Parameters.AddWithValue("@TaskID", Request.QueryString["ID"].ToString());
object data = cmd.ExecuteScalar();
if (data == null)
total = 0;
else
total = (decimal)cmd.ExecuteScalar();
con.Close();
return total;
}
decimal GetTotalEquipmentCost()
{
decimal total = 0;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText =
"SELECT SUM(e.Price * re.Quantity) AS TotalEquipmentCost FROM Resource_Equipments re " +
"JOIN Equipments e ON e.EquipmentID = re.EquipmentID " +
"JOIN ProjectTasks t ON t.TaskID = re.TaskID " +
"WHERE t.TaskID=@TaskID HAVING COUNT (*) > 0";
cmd.Parameters.AddWithValue("@TaskID", Request.QueryString["ID"].ToString());
object data = cmd.ExecuteScalar();
if (data == null)
total = 0;
else
total = (decimal)cmd.ExecuteScalar();
con.Close();
return total;
}
decimal GetTotalVehicleCost()
{
decimal total = 0;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText =
"SELECT SUM(rv.Cost) FROM Resource_Vehicles rv " +
"JOIN Vehicles v ON v.VehicleID = rv.VehicleID " +
"JOIN ProjectTasks t ON t.TaskID = rv.TaskID " +
"WHERE t.TaskID=@TaskID HAVING COUNT (*) > 0";
cmd.Parameters.AddWithValue("@TaskID", Request.QueryString["ID"].ToString());
object data = cmd.ExecuteScalar();
if (data == null)
total = 0;
else
total = (decimal)cmd.ExecuteScalar();
con.Close();
return total;
}
decimal GetTotalContractorCost()
{
decimal total = 0;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText =
"SELECT SUM(c.Rate) FROM Resource_Contractors rc " +
"JOIN Contractors c ON c.ContractorID = rc.ContractorID " +
"JOIN ProjectTasks t ON t.TaskID = rc.TaskID " +
"WHERE t.TaskID=@TaskID HAVING COUNT (*) > 0";
cmd.Parameters.AddWithValue("@TaskID", Request.QueryString["ID"].ToString());
object data = cmd.ExecuteScalar();
if (data == null)
total = 0;
else
total = (decimal)cmd.ExecuteScalar();
con.Close();
return total;
}
//End
double GetAmount()
{
double balance = 0;
balance = Convert.ToDouble(GetTotalMaterialCost() + GetTotalEquipmentCost() + GetTotalVehicleCost() + GetTotalContractorCost());
return balance;
} //Count Total Actual Cost
<!--Cost-->
<div class="form-group">
<label class="control-label col-lg-4">
Cost</label>
<div class="col-lg-8">
<asp:TextBox ID="ltAmount" runat="server" class="form-control" type="number" min="0.01"
max="1000000000.00" step="0.01" ReadOnly />
</div>
</div>