如何将复选框中的多个值添加到过程中

时间:2017-08-14 08:26:01

标签: c# sql asp.net stored-procedures

我有4个复选框,如果选中或取消选中复选框,它将通过参数上的步骤保存到sql数据库中的表,这是我的代码,但它没有做任何事情。我想让复选框更改,用户选中或选中复选框,它会自动在数据库上保存0或1值。如果我在每个复选框上都可以,它会好,但是如何使复选框检查在循环中更改?你能帮助我吗?非常感谢,我是学习者

SqlCommand cmd = new SqlCommand("SopProcess", con);//đưa câu lệnh sql đi thực thi  
cmd.CommandText = "SopProcess";
cmd.CommandType = CommandType.StoredProcedure;
bool[] checkstatus = { cb1.Checked, cb5.Checked, cb9.Checked, cb13.Checked };
string[] checkid = { cb1.Text, cb5.Text, cb9.Text, cb13.Text };
int j = checkid.Length;
int f = checkstatus.Length;
for (int i = 0; i < j; i++)
{
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("@CheckID", checkid[i]);
    cmd.Parameters.Add("@StatusClick", check[i]);
    cmd.ExecuteNonQuery();

}

这是我的程序

  Alter Proc SopProcess(@CheckID nvarchar(50),@StatusClick int)
  As
  Begin

  Create Table #Checkbox(checkboxid nvarchar(50),Checkstatus int)
  Declare @insert int = 'insert into   #Checkbox(checkboxid,Checkstatus)values('+@CheckID+','+@StatusClick+')'


 IF(@insert>0)
 Update StoreStatus Set Checkstatus = 1 Where Checkid = '"+@CheckID+"'
 Else
 Update StoreStatus Set Checkstatus = 0 Where Checkid = '"+@checkID+"'
 Select * From StoreStatus

 End

我的程序在顶部,但是当我运行代码c#时显示错误&#34;转换nvarchar值时转换失败&#39;插入#Checkbox(checkboxid,Checkstatus)值(&#39;到数据输入int。&#34;。我改为int,我也无法修复。

2 个答案:

答案 0 :(得分:1)

嘿好友

请描述有关您问题的更多详情。 根据您发布的代码。我只能给你这个答案。

<强>已更新!

bool[] checkstatus = { cb1.Checked, cb5.Checked, cb9.Checked, cb13.Checked };
string[] checkid = { cb1.Text, cb5.Text, cb9.Text, cb13.Text };

int j = checkid.Length; //this variable indicates the length of your array
int f = checkstatus.Length; //this variable indicates the length of you array

for (int i = 0; i < j; i++)
    {
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "SopProcess";
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("@CheckID", checkstatus[i]); //this should be the value
    cmd.Parameters.Add("@StatusClick", checkid[i]); // this should be the value
    cmd.ExecuteNonQuery();
    }

正如您所看到的,您需要将SqlCommand实例的Initialization放在循环中。 这将在每次循环时为您的存储过程提供一组新值。

如果这样可以解决您的问题,请检查一下。

答案 1 :(得分:0)

请提供更多详细信息。从帖子中我可以理解,当您选中或取消选中复选框时需要更新数据库。

在上面的例子中,你只需编写服务器端事件并绑定它。因此,每当您点击任何复选框时,它都会触发事件并更新

private void ChkBox_CheckedChanged(object sender, EventArgs e)
{
    foreach (Control c in this.Parent.Controls)
        {
            if (c is CheckBox)
            {

            }
        }

}

现在您可以访问所有复选框,根据Id和check and unckeck值,您可以使用现有逻辑。如果有帮助,请告诉我。