ASP.Net填充复选框快速解决方案?

时间:2011-05-12 10:31:14

标签: asp.net checkbox

我只是想知道是否有一种快速方法来填充查询中的复选框

目前我这样做

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个复选框,看起来很多不需要的代码只是填充我的复选框

快速做到这一点的任何想法?

由于

4 个答案:

答案 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控件构建复选框吗?