繁体   English   中英

公共变量在按钮单击事件asp.net上失去价值

[英]Public variable loses value on button click event asp.net

我的asp.net gridview中有复选框,并且我有一种方法可以选择多个复选框,效果很好。 之后,当用户在文本框中输入要更新为所选行的值时,我刚刚设置的值再次为空? 我包括了检查多个项目的方法和更新按钮。 为什么不保留这些值,我该如何解决?

公共变量

public string values = "";
public string salesorderNumber;

多个复选框

protected void SelectCheckBox_OnCheckedChanged(object sender, EventArgs e)
{
    CheckBox chk = sender as CheckBox;

    var rows = dropdeadGridView.Rows;
    int count = dropdeadGridView.Rows.Count;
    for (int i = 0; i < count; i++)
    {
        bool isChecked = ((CheckBox)rows[i].FindControl("SelectCheckBox")).Checked;
        if (isChecked)
        {
            values += rows[i].Cells[1].Text + ",";
            rows[i].BorderColor = System.Drawing.Color.Red;
            rows[i].ForeColor = System.Drawing.Color.Red;
            rows[i].BorderStyle = BorderStyle.Inset;
        }
    }
}

更新按钮

protected void UpdateButton_Click(object sender, EventArgs e)
{
    App_Code.GridData gridData = new App_Code.GridData();

        if (loadnumTextBox.Text == "" && RadDateTimePicker1.SelectedDate != null)
        {
            SqlConnection dbConn = App_Code.DBHelper.getConnection();
            try
            {
                using (dbConn)
                {
                    SqlCommand addJob = new SqlCommand(@"UPDATE ORDER_DETAIL SET DropDeadTime = @DropDeadTime WHERE SALES_ORDER_NUMBER = @SalesOrderNumber", dbConn);
                    //addJob.Parameters.AddWithValue("@SalesOrderNumber", Convert.ToInt32(IDTextBox.Text));
                    addJob.Parameters.AddWithValue("@SalesOrderNumber", values);
                    addJob.Parameters.AddWithValue("@DropDeadTime", RadDateTimePicker1.SelectedDate);
                    dbConn.Open();
                    addJob.ExecuteNonQuery();
                }
                NotificationLabel.Text = "Updated!";
                NotificationLabel.Visible = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            BindList();
        }

        if (loadnumTextBox.Text != "" && RadDateTimePicker1.SelectedDate == null)
        {
            SqlConnection dbConn = App_Code.DBHelper.getConnection();
            try
            {
                using (dbConn)
                {
                    SqlCommand addJob = new SqlCommand(@"UPDATE ORDER_DETAIL SET LOAD_NUMBER = @LOAD_NUMBER WHERE SALES_ORDER_NUMBER = @SalesOrderNumber", dbConn);
                    addJob.Parameters.AddWithValue("@SalesOrderNumber", salesorderNumber);
                    addJob.Parameters.AddWithValue("@LOAD_NUMBER", loadnumTextBox.Text);
                    dbConn.Open();
                    addJob.ExecuteNonQuery();
                }
                NotificationLabel.Text = "Updated!";
                NotificationLabel.Visible = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            BindList();
        }

如果要在请求之间使用它,则必须使用会话状态,视图状态,cookie或HTML表单/请求值之类的东西。

ASP.NET是无状态的,这意味着它不会保持从回发到回发的状态。

如果您想实现自己的目标,则需要一个静态的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM