2013-03-11 102 views
0

我有一個記錄列表,我用中繼器顯示在屏幕上。其中一列包含一個複選框「聯繫」。我已經設置了一些記錄進行檢查,有些不是。(在數據庫中)...但是當頁面加載所有記錄時檢查......有人知道爲什麼嗎?所有複選框返回檢查,即使「」

<input type="checkbox" name="chkBox" 
checked='<%# SetCheckboxValue((bool)Eval("Contacted"))%>' /> 

「接觸」是在代碼中的布爾集如果記錄被選中與否(從DB)

protected string SetCheckboxValue(bool Contacted) 
    { 
     if (Contacted) 
     { 
      return "checked"; 
     } 

     return String.Empty; 
    } 

SetCheckboxValue得到T或F和應該返回取決於背後的「檢查」或「」 然後,應用程序應顯示每個記錄檢查或空......但正如我所說的所有記錄顯示爲檢查?

任何想法的傢伙? 謝謝

+0

'接觸'有什麼價值?這是真的還是「T」? – 2013-03-11 16:14:20

+0

嗨拉維這是一個布爾,所以它是真的 – John 2013-03-11 16:15:41

+0

是否使用'Eval'合法嗎?我沒有在[文檔](http://msdn.microsoft.com/en-us/library/system.web.ui.databinder.eval.aspx)中看到它,但我自己並沒有使用它。 – Bobson 2013-03-11 16:15:44

回答

6

因爲屬性checked是一個布爾屬性,並不一定需要一個值。

它的存在或缺失表示是否選中該複選框。

更改加價到:

<input type="checkbox" name="chkBox" <%# SetCheckboxValue((bool)Eval("Contacted"))%> /> 

注意:爲了是X/HTML兼容,你應該生成屬性加價爲:checked="checked"但HTML簡單的checked就夠了。

protected string SetCheckboxValue(bool Contacted) 
{ 
    if (Contacted) 
    { 
     return "checked=\"checked\""; 
    } 

    return String.Empty; 
} 
+0

好男人謝謝你miky – John 2013-03-11 16:27:04

+0

不客氣! – 2013-03-11 16:27:55

4

在值checked是沒有必要的,完全是可選的。

<input type='checkbox' checked /> 

是相同

<input type='checkbox' checked='checked' /> 

是相同

<input type='checkbox' checked='' /> 

您需要徹底刪除的屬性checked以取消選中該複選框。

+0

好的爲此歡呼 – John 2013-03-11 16:27:26