基于Checkbox在Repeater中切换Div类。使用C#检查

时间:2011-12-04 14:58:44

标签: c# asp.net repeater

我有一个转发器,它将显示一组标题和复选框(有些不检查)。每个都包裹在一个背景色的div中。我想要做的就是更改已经选中的复选框的背景颜色,以便在页面上轻松识别它们。

这是转发器:

<asp:Repeater ID="rptCartridges" runat="server" OnItemDataBound="rp_ItemDataBound">
     <ItemTemplate>
          <div class="cartridgebox">
               <span class="cartridgeboxl"><%#Eval("cartName") %></span> 
               <span class="cartridgeboxr">
                    <asp:CheckBox ID="chkCart" name="chkbox" Checked = '<%#Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "cartChecked"))%>' runat="server" />
                <asp:HiddenField ID="hfCartID" runat="server" Value='<%#DataBinder.Eval(Container.DataItem, "cartID")%>' />
               </span>
          </div>
     </ItemTemplate>
</asp:Repeater>

我真正想要做的就是将类盒式磁带盒更改为cartridgeboxchecked,如果选中该复选框,则将其更改为

我尝试过操作rp_ItemDataBound。出错的地方是内联类的实际更改。我尝试过使用if语句,将runat =“server”添加到div并填充变量,然后在class语句中使用Response.Write。但似乎没有任何效果。

最好的方法是使用rp_ItemDataBound,如下所示:

   protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        string chkboxClass = "cartridgebox";

        CheckBox chk = (CheckBox)e.Item.FindControl("chkCart");
        HiddenField hfCartID = (HiddenField)e.Item.FindControl("hfCartID");


        // Adding the hide.Value Attribute to the chk.Text field.
        chk.Attributes.Add("Text", hfCartID.Value);

        if (chk.Checked == true)
        {
            chkboxClass = "cartridgeboxchecked";
        }
        else
        {
            chkboxClass = "cartridgebox";
        }

    }

但我缺乏将变量chkboxClass动态传递给div类的理解。当然,我可能认为这完全错了,所以任何指导都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

在ItemTemplate中对div使用以下标记:<div class='<%# ((bool)Eval("cartChecked"))? "cartridgeboxchecked" : "cartridgeboxl" %>' >

如果您需要立即更改复选框更改div的类,请考虑将onclick客户端事件处理程序添加到ItemDataBound Repeater的事件处理程序中的复选框