2011-05-12 77 views
0

我只是想知道如果有从我的查询ASP.Net填充复选框快速解决方案?

目前我做这

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个复选框,这似乎是一个很大的非填充我的复选框的快捷方式必要的代码,只是填充我的复选框

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

谢谢

回答

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。

+0

多数民众赞成在 - 谢谢:) – 2011-05-12 10:41:58

+0

您的欢迎。要回写到数据库或数据表中,你应该可以做这样的字符串YorN = CheckBox1.Checked? “Y”:“N”;这就是C#代码,但也许你可以转换为VB – 2011-05-12 11:01:28

0

把它放在一个以字符串和复选框作为参数的函数中。

public function func(byval col as string) as boolean 

    return Trim(DataTable.Rows(0).Item(col).ToString()) = "Y" Then 

end sub 

现在你可以调用该函数并分配给每个复选框。

+1

为什么不只是返回(DataTable.Rows(0).Item(col).ToString())=“Y”? – 2011-05-12 10:42:59

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"; 
} 
0

如果可能的话,您可能会考虑使用数据和Repeater控件构建复选框?