我有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,我也无法修复。
答案 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值,您可以使用现有逻辑。如果有帮助,请告诉我。