Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据复选框更新某些框_C#_Asp.net - Fatal编程技术网

C# 根据复选框更新某些框

C# 根据复选框更新某些框,c#,asp.net,C#,Asp.net,我的页面上有一个复选框,当选中该复选框时,可以启用我输入的一半内容(主要是文本框),我需要在C#中编写代码,无论发生什么情况,都会更新前半行,如果选中该复选框,则添加其他内容。我有我在下面尝试过的代码,但如何才能有效地完成这项任务 protected void Button1_Click(object sender, EventArgs e) { string updateSQL; updateSQL = "UPDATE Projects SET ";

我的页面上有一个复选框,当选中该复选框时,可以启用我输入的一半内容(主要是文本框),我需要在C#中编写代码,无论发生什么情况,都会更新前半行,如果选中该复选框,则添加其他内容。我有我在下面尝试过的代码,但如何才能有效地完成这项任务

protected void Button1_Click(object sender, EventArgs e)
    {
        string updateSQL;
        updateSQL = "UPDATE Projects SET ";
        updateSQL += "ProjectDescription=@ProjectDescription, ";
        updateSQL += "DateAssigned=@StartDate, DueDate=@DueDate, SystemNumber=@SystemNumber ";
        updateSQL += "WHERE ProjectName=@ProjectName";

        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ProjectsAndTasksTestConnectionString"].ConnectionString);
        SqlCommand cmd = new SqlCommand(updateSQL, con);

        if (CheckBox_ProjectResults.Checked == false)
        {
            cmd.Parameters.AddWithValue("@ProjectName", DDL1.SelectedItem.Text);
            cmd.Parameters.AddWithValue("@ProjectDescription", UpdatetxtProjectDesc.Text);
            cmd.Parameters.AddWithValue("@StartDate", UpdatetxtStartDate.Text);
            cmd.Parameters.AddWithValue("@DueDate", UpdatetxtEndDate.Text);
            cmd.Parameters.AddWithValue("@SystemNumber", DropDownList2.SelectedItem.Text);



        }
            if (CheckBox_ProjectResults.Checked == true)
            {
                string updateSQL;
                updateSQL = "DateCompleted=@DateCompleted,TrackerNumber=@TrackerNumber, DocumentName=@DocumentName";


                cmd.Parameters.AddWithValue("@DateCompleted", TxtActualEnd.Text);
                cmd.Parameters.AddWithValue("@DocumentName", attachmentFileUpload.FileName);
                cmd.Parameters.AddWithValue("@TrackerNumber", UpdatetxtTrackerNumber.Text);
                cmd.Parameters.AddWithValue("@ProjectName", DDL1.SelectedItem.Text);
                cmd.Parameters.AddWithValue("@ProjectDescription", UpdatetxtProjectDesc.Text);
                cmd.Parameters.AddWithValue("@StartDate", UpdatetxtStartDate.Text);
                cmd.Parameters.AddWithValue("@DueDate", UpdatetxtEndDate.Text);
                cmd.Parameters.AddWithValue("@SystemNumber", DropDownList2.SelectedItem.Text);
            }


            int updated = 0;
            try
            {
                con.Open();
                updated = cmd.ExecuteNonQuery();
                lblResults.Text = updated.ToString() + " record updated.";
            }
            catch (Exception err)
            {
                lblResults.Text = "Error updating. ";
                lblResults.Text += err.Message;
            }
            finally
            {
                con.Close();
            }
    }
更新2

protected void Button1_Click(object sender, EventArgs e)
        {    
            if (CheckBox_ProjectResults.Checked == false)
            {
string updateSQL;
            updateSQL = "UPDATE Projects SET ";
            updateSQL += "ProjectDescription=@ProjectDescription, ";
            updateSQL += "DateAssigned=@StartDate, DueDate=@DueDate, SystemNumber=@SystemNumber ";
            updateSQL += "WHERE ProjectName=@ProjectName";

            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ProjectsAndTasksTestConnectionString"].ConnectionString);
            SqlCommand cmd = new SqlCommand(updateSQL, con);

                cmd.Parameters.AddWithValue("@ProjectName", DDL1.SelectedItem.Text);
                cmd.Parameters.AddWithValue("@ProjectDescription", UpdatetxtProjectDesc.Text);
                cmd.Parameters.AddWithValue("@StartDate", UpdatetxtStartDate.Text);
                cmd.Parameters.AddWithValue("@DueDate", UpdatetxtEndDate.Text);
                cmd.Parameters.AddWithValue("@SystemNumber", DropDownList2.SelectedItem.Text);

try, catch, finally....
            }
                if (CheckBox_ProjectResults.Checked == true)
                {


                   string updateSQL;
            updateSQL = "UPDATE Projects SET ";
            updateSQL += "ProjectDescription=@ProjectDescription, ";
            updateSQL += "DateAssigned=@StartDate, DueDate=@DueDate, SystemNumber=@SystemNumber ";
            updateSQL += "WHERE ProjectName=@ProjectName";

            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ProjectsAndTasksTestConnectionString"].ConnectionString);
            SqlCommand cmd = new SqlCommand(updateSQL, con);


                    cmd.Parameters.AddWithValue("@DateCompleted", TxtActualEnd.Text);
                    cmd.Parameters.AddWithValue("@DocumentName", attachmentFileUpload.FileName);
                    cmd.Parameters.AddWithValue("@TrackerNumber", UpdatetxtTrackerNumber.Text);
                    cmd.Parameters.AddWithValue("@ProjectName", DDL1.SelectedItem.Text);
                    cmd.Parameters.AddWithValue("@ProjectDescription", UpdatetxtProjectDesc.Text);
                    cmd.Parameters.AddWithValue("@StartDate", UpdatetxtStartDate.Text);
                    cmd.Parameters.AddWithValue("@DueDate", UpdatetxtEndDate.Text);
                    cmd.Parameters.AddWithValue("@SystemNumber", DropDownList2.SelectedItem.Text);

try, catch, finally....
                }

如果由于格式错误而创建了嵌套的,则忽略了嵌套的:

if (CheckBox_ProjectResults.Checked == false)
{
// code removed
if (CheckBox_ProjectResults.Checked == true)
{
 // code removed
}
}
如果您正确缩进代码,您将很容易发现自己的问题:

if (CheckBox_ProjectResults.Checked == false)
{
    // code removed
    if (CheckBox_ProjectResults.Checked == true)
    {
       // code removed
    }
}
另一个您需要注意的问题是字符串是不可变的,这意味着它们在赋值后不会改变值。
在这通电话之后:

 SqlCommand cmd = new SqlCommand(updateSQL, con);
此时,
cmd
被设置为
updateSQL
字符串。如果你写几行就行了

updateSQL += "...awesome sql string... ";
该更改不会更改
cmd
中的sql字符串,更不用说它会变为神奇有效的sql了

让我们看看我们能做些什么来解决这个问题。我选择了一个实现,在这个实现中,我将sql的构建和添加的参数紧密地放在一起。我使用了,并且希望很好地处理连接,所以我将连接和命令包装在一个语句中

// dispose connection
using(var con = new SqlConnection(ConfigurationManager.ConnectionStrings["ProjectsAndTasksTestConnectionString"].ConnectionString))
{
    using(var cmd = new SqlCommand())
    {
        // when we += multiple string we better use a StringBuilder
        StringBuilder updateSQL = new StringBuilder();
        // create our update statement 
        updateSQL.Append("UPDATE Projects SET "); // there is as space on purpose!
        // Checked is already a boolean so not much need
        // to check if this is true it either is or it isn't
        if (CheckBox_ProjectResults.Checked)
        {
            updateSQL.Append("DateCompleted=@DateCompleted,");
            cmd.Parameters.AddWithValue("@DateCompleted", TxtActualEnd.Text);

            updateSQL.Append("TrackerNumber=@TrackerNumber,");
            cmd.Parameters.AddWithValue("@TrackerNumber", UpdatetxtTrackerNumber.Text);

            updateSQL.Append("DocumentName=@DocumentName,");
            cmd.Parameters.AddWithValue("@DocumentName", attachmentFileUpload.FileName);

        else 
        {
            updateSQL.Append("DateAssigned=@StartDate,");
            cmd.Parameters.AddWithValue("@StartDate", UpdatetxtStartDate.Text);

            updateSQL.Append("DueDate=@DueDate,")
            cmd.Parameters.AddWithValue("@DueDate", UpdatetxtEndDate.Text);

            updateSQL.Append("SystemNumber=@SystemNumber,");
            cmd.Parameters.AddWithValue("@SystemNumber", DropDownList2.SelectedItem.Text);
        }
        // this is always there so make it our last one
        updateSQL.Append("ProjectDescription=@ProjectDescription "); // notice no comma but a space!
        cmd.Parameters.AddWithValue("@ProjectDescription", UpdatetxtProjectDesc.Text);

        // no matter what Projectname is always there because it is the where!
        cmd.Parameters.AddWithValue("@ProjectName", DDL1.SelectedItem.Text);
        updateSQL.Append("WHERE ProjectName=@ProjectName");

        cmd.Connection = con;
        // call ToString on the String builder
        cmd.CommandText = updateSQL.ToString();
        int  updated = 0;
        try
        {
            con.Open();
            updated = cmd.ExecuteNonQuery();
            lblResults.Text = String.Format("{0} record(s) updated.", updated);
        }
        catch (SqlException sqlExc)
        {
            lblResults.Text = String.Format("Error updating. {0} - {1} - {2}"
                               , sqlExc.Message
                               , sqlExc.Number
                               , sqlExc.LineNumber);
        }
    }
}

@雷内,你的意思是改变我的括号吗?我试过了,但仍然得到了相同的错误…checkbox.checked显示true或false,这取决于它是否被选中,这是有效的,我编辑了我尝试的代码,但我想也许我需要摆脱updateSQL或将其移动到类似于第二次更新的位置,我知道它不会运行,但类似的东西会起作用吗?对于嵌套问题,我仍然不明白在您放置的前两个代码块之间有什么区别,我可以在C中查找嵌套以获得更多阅读,还是应该搜索其他内容?我必须查找stringbuilder,以便了解更多有关它的信息,else语句也有一个错误,前面还有最后一个“;”。谢谢你的解释,真的很有帮助。当然,没问题,很乐意帮忙。