C# 如何根据数据库值Y和N选择不在datagrid中的复选框?
我有3个复选框,我希望根据sql server数据库中的值选择它们。数据库有两列“名称”和“重新定位”。如果重定位值为Y,我希望选中该复选框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
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 |