2012-11-28 58 views
0

我使用一箇中繼器:如何禁用中繼器(ASP.NET)檢查複選框

<asp:Repeater ID="rptAdvertisements" runat="server" OnItemCommand="rptAdvertisements_ItemCommand" > 
    <ItemTemplate>   
      <tr <%# Eval("RowStyle")%>> 
       <td><input type="checkbox" DISABLED /></td> 
       <td><%# Eval("ADV_Title")%></td> 
       <td><%# Eval("ADV_NbView")%></td> 
       <td><%# Eval("Date")%></td> 
       <td><%# Eval("DateEnd")%></td> 
       <td><img src="<%=ResolveClientUrl("~/Images/Advertisements/")%><%# Eval("IMG")%>" alt="<%# Eval("ADV_Title")%>" title="<%# Eval("ADV_Title")%>" style="max-height:100px;max-width:100px;" /></td> 
       <td><input type="checkbox" id="checkbox1" runat="server" checked='<%#Convert.ToBoolean(Eval("ADV_Special"))%>' /></td> 
       <td><input type="checkbox" id="checkbox2" runat="server" checked='<%#Convert.ToBoolean(Eval("ADV_Info"))%>' /></td> 
       </tr> 
    </ItemTemplate> 
</asp:Repeater> 

如何禁用檢查複選框此中繼?

+0

可能重複[在單擊提交按鈕時禁用Repeater中的複選框](http://stackoverflow.com/questions/11060564/disabling-checked-checkboxes-in-a-repeater-when-clicking-a-提交按鈕) –

+0

可能的重複[如何使用DataBinder.Eval在gridview中檢查複選框](http://stackoverflow.com/questions/7689799/how-to-make-a-checkbox-checked-in- a-gridview-using-databinder-eval) – Kaf

回答

1

演員到bool而不是Convert.ToBoolean

變化

<input type="checkbox" id="checkbox1" runat="server" checked='<%#Convert.ToBoolean(Eval("ADV_Special"))%>' /> 

<input type="checkbox" id="checkbox1" runat="server" checked='<%# (bool)(Eval("ADV_Special"))%>' /> 
+0

它不能解決問題:我需要在開始時填充複選框,並且在用戶無法用鼠標點擊更改已選中或未選中複選框之後。 –

0

在您需要的複選框被永久停用的基礎上,你需要給t添加一個disabled屬性他標記。

例如

<input type="checkbox" disabled id="checkbox1" runat="server" checked='<%#Convert.ToBoolean(Eval("ADV_Special"))%>' /> 

編輯: 看起來你的代碼也不檢查複選框。爲了檢查複選框,它只需要checked屬性存在或不存在(而不是像設置它那樣將其設置爲true/false)。

所以,你需要做以下操作來顯示/隱藏在另外checked屬性來禁用它:

<input type="checkbox" id="checkbox1" disabled <%#Convert.ToBoolean(Eval("ADV_Special")) ? "checked" : String.Empty %> /> 

NB - 要做到這一點,你必須拿出runat="server"屬性停止的問題與畸形的服務器控制。如果你想有機會獲得在後端的複選框,你總是可以使用一個asp:CheckBox代替如下:

<asp:CheckBox ID="checkbox1" Enabled="false" Checked='<%#Convert.ToBoolean(Eval("ADV_Special"))' runat="server" /> 
+0

@ tristankoffee它不解決問題:禁用所有複選框即使如果Convert.ToBoolean(Eval(「ADV_Special」))==真 不檢查所有複選框我需要在開始時填充複選框,並且在用戶無法更改用鼠標點擊選中或取消選中複選框。 –

+0

@SLNEEBD - 你的問題並不清楚。您的問題顯示爲禁用中繼器中的複選框。我將更新答案,向您展示如何檢查複選框。 – tristankoffee

+0

@SLNEEBD - 是否解決了你的問題?如果是這樣,如果您可以將問題標記爲已回答,或者如果不是,則可以提供有關仍然無法運行的更多信息。 – tristankoffee

0

老問題,但是這可能幫助別人:

<input type="checkbox" <%# ((bool)Eval("ShouldCheck") ? "checked='checked' disabled='disabled'" : "") %> /> 

這個例子檢查數據綁定容器的ShouldCheck布爾屬性。如果爲true,它會檢查複選框並禁用它。我的用例是,我希望用戶只有在沒有選中的情況下才能檢查該框(單向複選框)。

相關問題