3

データベース内のクエリから DataField にバインドされている CheckBoxField 列を持つ ASP.NET の GridView があります。値が false の場合はチェックし、値が true の場合はチェックを外せるようにする必要があります。

これは、ほとんどのチェックボックス コントロールがどのように機能するかを完全に逆にしているため、少し標準的ではありませんが、これを行う方法はありますか?

4

1 に答える 1

2

これには複数のアプローチがあります。これを試すことができます:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        foreach (Control ctrl in e.Row.Cells[0].Controls)
        {
            if (ctrl.GetType().Name == "CheckBox")
            {
                CheckBox chk = (CheckBox)ctrl;
                chk.Checked = !chk.Checked;
            }
        }
    }
}

チェックボックスフィールドがある場所に正しいセルを追加することを忘れないでください。

もう 1 つは、TemplateField を追加することです。

<asp:TemplateField>
    <ItemTemplate>
        <asp:CheckBox ID="CheckBox1" runat="server" 
            Checked='<%# !Convert.ToBoolean(Eval("Status")) %>' />
    </ItemTemplate>
</asp:TemplateField>

データベース サーバーから取得した後でデータ ソースを変更することもできます。そのため、他の場所で通常の方法でクエリを使用している場合は、クエリを変更する必要はありません。あなたがGeneric Listあなたのアイテムを持っているとしましょう:

myItems.ForEach(item => item.Status = !item.Status);

追加の jQuery バージョン:

<script>
    $(function () {
        $("#<%=GridView1.ClientID %> input[type='checkbox']").each(function () {
            $(this).prop("checked", !$(this).prop("checked"));
        });
    });
</script>
于 2013-03-28T17:54:23.850 に答える