Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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# 如何根据数据库值Y和N选择不在datagrid中的复选框?_C#_Asp.net_Checkbox - Fatal编程技术网

C# 如何根据数据库值Y和N选择不在datagrid中的复选框?

C# 如何根据数据库值Y和N选择不在datagrid中的复选框?,c#,asp.net,checkbox,C#,Asp.net,Checkbox,我有3个复选框,我希望根据sql server数据库中的值选择它们。数据库有两列“名称”和“重新定位”。如果重定位值为Y,我希望选中该复选框 Name | Relocate | ----------------- John | Y | Jane | N | Mike | Y | 表: Name | Relocate | ----------------- John | Y | Jane | N | Mike | Y

我有3个复选框,我希望根据sql server数据库中的值选择它们。数据库有两列“名称”和“重新定位”。如果重定位值为Y,我希望选中该复选框

Name | Relocate |
-----------------
John | Y        | 
Jane | N        | 
Mike | Y        | 
表:

Name | Relocate |
-----------------
John | Y        | 
Jane | N        | 
Mike | Y        | 
我知道我需要有3个与约翰、简和迈克相关的复选框,但我不确定该怎么做。以下是我尝试过的,但所有复选框都已选中。应选中两个复选框(John和Mike),但不应选中一个复选框(Jane)

Name | Relocate |
-----------------
John | Y        | 
Jane | N        | 
Mike | Y        | 
ASP.NET

Name | Relocate |
-----------------
John | Y        | 
Jane | N        | 
Mike | Y        | 
 <asp:CheckBox ID="chkRelocate" runat="server" />
 <asp:CheckBox ID="chkRelocate0" runat="server" />
 <asp:CheckBox ID="chkRelocate1" runat="server" />

代码中的问题是您同时设置了所有3个检查框的值。所以,在第一次迭代中,它将all设置为“Checked”,第二次all设置为“unchecked”,第三次all设置为“Checked”。 另外-如果您的“con”在“using”中,那么为什么要在额外的con.Open()和con.Close()中指定

Name | Relocate |
-----------------
John | Y        | 
Jane | N        | 
Mike | Y        | 
如果只保证了3项,那么我会说(尽管这是一个糟糕的方法):

Name | Relocate |
-----------------
John | Y        | 
Jane | N        | 
Mike | Y        | 

一个更好的方法是将复选框放入它自己的列表中,这样您就可以在while循环中迭代并设置变量值。因此,您可能希望使用CheckBoxList()

如果您可以显示DataGrid的代码,而不仅仅是复选框,那么就更容易了。然而,我认为这很容易,就像
如何将数据填充到DataGrid?我没有使用DataGrid。我通过在线搜索找到的所有解决方案都显示了datagrids,所以我只是指定我没有使用datagrid。这种方法有效。要回答您的问题,为什么我要指定一个额外的con.open…这是因为如果我不指定,我会得到以下错误:ExecuteReader需要一个开放的可用连接。连接的当前状态是关闭的。是的,您是对的,但您不必“关闭”它,因为using语句会在它移出时关闭它。(我相应地编辑了我的答案)好吧,那么如果行将继续增长,而不仅仅是这3行呢?@Dr.Prog,那么您应该使用复选框列表(事实上,您应该研究如何使用它)。我的答案是“我知道我需要有3个与约翰、简和迈克相关的复选框”。此外,如果这是您的个人学习项目,您可能希望使用MVC标准而不是Web表单(这将提高质量和开发速度)。然后在Web中,您可以使用类似于:
@foreach(Model.Answers中的var item{@Html.Label(@item.Name):@Html的内容。CheckBox@item.Answer)}
Name | Relocate |
-----------------
John | Y        | 
Jane | N        | 
Mike | Y        |