2010-01-20 49 views
10

對於我的生活,我無法綁定TemplateField中的CheckBox控件的Checked屬性(直接聲明)。在TemplateItem中綁定CheckBox的Checked屬性

我曾嘗試:

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:CheckBox ID="deactivated" runat="server" checked="<%#Eval("Deactivated")%>"></asp:CheckBox> 
    </ItemTemplate> 
<asp:TemplateField> 

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:CheckBox ID="deactivated" runat="server" checked="<%#Eval(Container.DataItem, "Deactivated")%>"></asp:CheckBox> 
    </ItemTemplate> 
    </asp:TemplateField>  
</asp:TemplateField> 

我總是看到一個警告,指出:

無法創建類型爲 'System.Boolean' 的對象從它的串代表'''檢查'屬性

我在做什麼錯?

回答

17

可能是因爲您使用了雙引號。嘗試:

checked= '<%# Eval("Deactivated") %>' 
+0

你說得對。我不會將雙引號用作外引號 – citronas 2010-01-20 18:52:11

0

Eval用於評估表達式。

嘗試綁定。

checked='<%#Bind("Deactivated")%>' 
1

最好通過控件的rowdatabound事件中的代碼隱藏(假設它是gridview)來處理這個問題。

if (e.Row.RowType == RowType.DataRow) 
{ 
    CheckBox chk = (CheckBox) GridView1.FindControl("deactivated"); 
    chk.Checked = true; 
} 

注:ABV代碼中可能有錯誤......

OR,

檢索以這樣的方式的數據,該複選框試圖綁定到應是一個領域,特定領域類型位(即它可以有1或0)。

3

使用單引號括起來的屬性值:

<asp:CheckBox ID="deactivated" runat="server" checked='<%#Eval("Deactivated")%>'></asp:CheckBox>

1

這是一個非常古老的問題,但這裏是我在VS2013做,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

<asp:TemplateColumn ItemStyle-Width="50" HeaderText="Is Verified"> 
    <ItemTemplate> 
    <asp:CheckBox ID="chkVerified" runat="server" AutoPostBack="true" EnableViewState="true" OnCheckedChanged="chkVerified_CheckedChanged" Checked='<%#DataBinder.GetPropertyValue(Container.DataItem,"IsVerified").ToString()=="0"%>' /> 

         </ItemTemplate> 
</asp:TemplateColumn> 

,因爲我的屬性不是布爾值。

相關問題