c# - 当我从下拉列表中选择一个值来解决网格中的值时,它会覆盖它

标签 c# asp.net sql-server

我需要帮助用 Tardy、halfdaypenalty 和 earlyout 减去 MonthlySalary 但添加加类奖励

表格的例子

CREATE TABLE PAYROLL
(
    RegEmpID INT,
    PayID INT IDENTITY (100, 1) PRIMARY KEY,
    TardyPenalty DECIMAL,
    HalfdayPenalty DECIMAL,
    EarlyOutPenalty DECIMAL,
    MonthlySalary DECIMAL,
    OvertimeReward DECIMAL
)

我似乎找不到单独和/或一起解决它们的方法

所以基本上就是这样,asp.net 中有一个下拉列表,其中每个都有一个值,特别是 late = 50 halfday =50 earlyout = 50。薪水已经有一个设定值,每次我尝试时似乎用他们的值覆盖总值。

这是代码

protected void btnupdatepay_Click(object sender, EventArgs e)
{
    double total;
    double tardy;
    double half;
    double early;
    double payroll;
    double overtime;

    total = 0;
    tardy = 0.0;
    half = 0.0;
    early = 0.0;
    payroll = 0.0;
    overtime = 0.0;

    if (Penalty.SelectedValue == "Tardy")
    {
        tardy = 50;
        total = total - tardy;
    }

    if (Penalty.SelectedValue == "Half Day")
    {
        half = 100;
        total = total - half;
    }

    if (Penalty.SelectedValue == "Early Out")
    {
        early = 50;
        total = total - early;
    }

    if (Penalty.SelectedValue == "Overtime")
    {
        overtime = 100;
        total = total + overtime;
    }

    total = total + overtime - half - early - tardy;

    int rowsAffected;

    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ConnectionString);
    SqlCommand cmd = new SqlCommand("UPDATE PAYROLL SET [TardyPenalty] = @TardyPenalty, [HalfdayPenalty] = @HalfdayPenalty, [EarlyOutPenalty] = @EarlyOutPenalty , [OvertimeReward] = @OvertimeReward, [MonthlySalary]= @MonthlySalary WHERE [PayID] = @PayID", con);

    cmd.Parameters.AddWithValue("@TardyPenalty", tardy);
    cmd.Parameters.AddWithValue("@HalfdayPenalty", half);
    cmd.Parameters.AddWithValue("@EarlyOutPenalty", early);
    cmd.Parameters.AddWithValue("@PayID", txtpayid.Text);
    cmd.Parameters.AddWithValue("@OvertimeReward", overtime);
    cmd.Parameters.AddWithValue("@MonthlySalary", total);

    try
    {
        con.Open();
        rowsAffected = cmd.ExecuteNonQuery();

        datapay.DataBind();
    }
    finally
    {
        con.Close();
    }
}

也许我做错了什么 - 找不到办法

最佳答案

似乎您的“总计”变量在您的处理程序中应该有不同的名称。尝试使用,例如,_total:

double _total = 0;

//work with _total

total = _total + ...

关于c# - 当我从下拉列表中选择一个值来解决网格中的值时,它会覆盖它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52026845/

相关文章:

javascript - 我如何知道 javascript 所有异步操作何时结束?

sql - 显式调用触发器

c# - 在 C# 中捕获 COM 异常的最佳实践是什么?

c# - 单击 DataGridView 列标题时禁用排序

c# - 根据当前 IPrincipal 查找用户邮箱

c# - 使用 Request.Files 并在不重新加载页面的情况下从 POST 更改为 GET?

c# - ASP.Net MVC 5 OAuth2 Facebook 声明未保留。为什么?

c# - 为什么这里需要 "this"(扩展方法)?

mysql - 将表列名存储为sql server中的变量

mysql - SQL 查询显示列中的字符串值