2011-05-12 51 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控件構建複選框?