我只是想知道是否有一种快速方法来填充查询中的复选框
目前我这样做
If Trim(DataTable.Rows(0).Item("COLUMN1").ToString()) = "Y" Then
cb1.Checked = True
Else
cb1.Checked = False
End If
If Trim(DataTable.Rows(0).Item("COLUMN2_FLAG").ToString()) = "Y" Then
cb2.Checked = True
Else
cb2.Checked = False
End If
If Trim(DataTable.Rows(0).Item("COLUMN3_FLAG").ToString()) = "Y" Then
cb3.Checked = True
Else
cb3.Checked = False
End If
总共我有15个复选框,看起来很多不需要的代码只是填充我的复选框
快速做到这一点的任何想法?
由于
答案 0 :(得分:3)
您的if语句需要布尔值来评估其流量。复选框也会收到一个布尔值。
我想你可以做到:
cb1.Checked = Trim(DataTable.Rows(0).Item("COLUMN1").ToString()) == "Y"
cb2.Checked = Trim(DataTable.Rows(0).Item("COLUMN2_FLAG").ToString()) == "Y"
cb3.Checked = Trim(DataTable.Rows(0).Item("COLUMN3_FLAG").ToString()) == "Y"
我使用C#而不是vb很抱歉,如果语法不正确的话。但基本上如果布尔表达式的计算结果为true,则设置为checked = true,如果计算结果为false,则将其设置为false。
答案 1 :(得分:1)
如果您的命名约定过于可信并且保持一致,则可以使用循环来完成复选框的数组。对不起,这是在C#中,但我对我的VB.NET语法没有信心。希望转换起来应该很容易。
Checkbox[] checkboxes = new Checkbox[] { cb1, cb2, cb3.....};
foreach(var checkbox in checkboxes)
{
string index = checkbox.Id.Substring(2);
if (DataTable.Rows(0).Item("COLUMN" + index) != null)
checkbox.Checked = DataTable.Rows(0).Item("COLUMN" + index).ToString() == "Y";
else if (DataTable.Rows(0).Item("COLUMN" + index + "_FLAG" ) != null)
checkbox.Checked = DataTable.Rows(0).Item("COLUMN" + index + "_FLAG").ToString() == "Y";
}
答案 2 :(得分:0)
将此函数放入一个以字符串和复选框作为参数的函数中。
public function func(byval col as string) as boolean
return Trim(DataTable.Rows(0).Item(col).ToString()) = "Y" Then
end sub
现在您可以调用该功能并分配给每个复选框。
答案 3 :(得分:0)
如果可能,您可以考虑使用数据和Repeater控件构建复选框吗?