12

私の人生の間、TemplateField内の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>

次のような警告が表示され続けます。

'Checked'プロパティの文字列表現''からタイプ'System.Boolean'のオブジェクトを作成できません

私は何が間違っているのですか?

4

5 に答える 5

18

使用した二重引用符が原因である可能性があります。試す:

checked= '<%# Eval("Deactivated") %>'
于 2010-01-20T18:49:38.693 に答える
3

プロパティ値を一重引用符で囲みます。

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

于 2010-01-20T18:50:24.603 に答える
1

これは、コントロールのrowdataboundイベントでコードビハインドを介して処理するのが最適です(グリッドビューであると想定)。

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

注:abvコードにはエラーが含まれている可能性があります...

また、

チェックボックスがバインドしようとしている特定のフィールドがビットタイプのフィールドになるようにデータを取得します(つまり、1または0のいずれかになります)。

于 2010-01-20T18:48:11.380 に答える
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>

私の財産はブール値ではなかったからです。

于 2014-02-06T20:34:42.850 に答える
0

Evalは式を評価するためのものです。

バインドしてみてください。

checked='<%#Bind("Deactivated")%>'
于 2010-01-20T18:43:49.037 に答える